Embedded file check
This commit is contained in:
parent
333d48cab6
commit
389c63aa51
33
cpdfua.ml
33
cpdfua.ml
|
@ -109,7 +109,38 @@ let matterhorn_20_003 pdf = ()
|
||||||
|
|
||||||
(* The file specification dictionary for an embedded file does not contain F
|
(* The file specification dictionary for an embedded file does not contain F
|
||||||
and UF entries. *)
|
and UF entries. *)
|
||||||
let matterhorn_21_001 pdf = ()
|
let matterhorn_21_001 pdf =
|
||||||
|
let from_nametree =
|
||||||
|
match Pdf.lookup_direct pdf "/Root" pdf.Pdf.trailerdict with
|
||||||
|
| Some catalog ->
|
||||||
|
begin match Pdf.lookup_direct pdf "/Names" catalog with
|
||||||
|
| Some names ->
|
||||||
|
begin match Pdf.lookup_direct pdf "/EmbeddedFiles" names with
|
||||||
|
| Some embeddedfiles ->
|
||||||
|
map snd (Pdf.contents_of_nametree pdf embeddedfiles)
|
||||||
|
| None -> []
|
||||||
|
end
|
||||||
|
| None -> []
|
||||||
|
end
|
||||||
|
| None -> []
|
||||||
|
in
|
||||||
|
let from_annots =
|
||||||
|
option_map
|
||||||
|
(fun x ->
|
||||||
|
if x.Pdfannot.subtype = Pdfannot.FileAttachment
|
||||||
|
then Pdf.lookup_direct pdf "/FS" x.Pdfannot.annotrest
|
||||||
|
else None)
|
||||||
|
(flatten (map (Pdfannot.annotations_of_page pdf) (Pdfpage.pages_of_pagetree pdf)))
|
||||||
|
in
|
||||||
|
if
|
||||||
|
List.exists
|
||||||
|
(fun x ->
|
||||||
|
match Pdf.lookup_direct pdf "/F" x, Pdf.lookup_direct pdf "/UF" x with
|
||||||
|
| Some _, Some _ -> false
|
||||||
|
| _ -> true)
|
||||||
|
(from_nametree @ from_annots)
|
||||||
|
then
|
||||||
|
merror ()
|
||||||
|
|
||||||
(* File contains the dynamicRender element with value “required”. *)
|
(* File contains the dynamicRender element with value “required”. *)
|
||||||
let matterhorn_25_001 pdf =
|
let matterhorn_25_001 pdf =
|
||||||
|
|
Loading…
Reference in New Issue