Added manual artifact control + turn off auto
This commit is contained in:
parent
18b569aeff
commit
8c2440fb7a
|
@ -2810,6 +2810,9 @@ let specs =
|
||||||
("-end-stag", Arg.Unit Cpdfdrawcontrol.endstag, " End structure branch");
|
("-end-stag", Arg.Unit Cpdfdrawcontrol.endstag, " End structure branch");
|
||||||
("-auto-tags", Arg.Unit (fun _ -> Cpdfdrawcontrol.autotags true), " Auto-tag paragraphs and figures");
|
("-auto-tags", Arg.Unit (fun _ -> Cpdfdrawcontrol.autotags true), " Auto-tag paragraphs and figures");
|
||||||
("-no-auto-tags", Arg.Unit (fun _ -> Cpdfdrawcontrol.autotags false), " Don't auto-tag paragraphs and figures");
|
("-no-auto-tags", Arg.Unit (fun _ -> Cpdfdrawcontrol.autotags false), " Don't auto-tag paragraphs and figures");
|
||||||
|
("-artifact", Arg.Unit (fun _ -> Cpdfdrawcontrol.artifact ()), " Begin an artifact");
|
||||||
|
("-end-artifact", Arg.Unit (fun _ -> Cpdfdrawcontrol.endartifact ()), "End an artifact");
|
||||||
|
("-no-auto-artifacts", Arg.Unit (fun _ -> Cpdfdrawcontrol.autoartifacts false), " Don't mark untagged content as artifacts");
|
||||||
("-rect", Arg.String Cpdfdrawcontrol.addrect, " Draw rectangle");
|
("-rect", Arg.String Cpdfdrawcontrol.addrect, " Draw rectangle");
|
||||||
("-to", Arg.String Cpdfdrawcontrol.addto, " Move to");
|
("-to", Arg.String Cpdfdrawcontrol.addto, " Move to");
|
||||||
("-line", Arg.String Cpdfdrawcontrol.addline, " Add line to");
|
("-line", Arg.String Cpdfdrawcontrol.addline, " Add line to");
|
||||||
|
|
31
cpdfdraw.ml
31
cpdfdraw.ml
|
@ -1,6 +1,8 @@
|
||||||
open Pdfutil
|
open Pdfutil
|
||||||
open Cpdferror
|
open Cpdferror
|
||||||
|
|
||||||
|
let do_add_artifacts = ref false
|
||||||
|
|
||||||
type colspec =
|
type colspec =
|
||||||
NoCol
|
NoCol
|
||||||
| RGB of float * float * float
|
| RGB of float * float * float
|
||||||
|
@ -56,6 +58,8 @@ type drawops =
|
||||||
| Rise of float
|
| Rise of float
|
||||||
| STag of string
|
| STag of string
|
||||||
| EndSTag
|
| EndSTag
|
||||||
|
| BeginArtifact
|
||||||
|
| EndArtifact
|
||||||
|
|
||||||
(*let rec string_of_drawop = function
|
(*let rec string_of_drawop = function
|
||||||
| Qq o -> "Qq (" ^ string_of_drawops o ^ ")"
|
| Qq o -> "Qq (" ^ string_of_drawops o ^ ")"
|
||||||
|
@ -418,6 +422,10 @@ let rec ops_of_drawop struct_tree dryrun pdf endpage filename bates batespad num
|
||||||
| EndSTag ->
|
| EndSTag ->
|
||||||
structdata =| StDataEndTree;
|
structdata =| StDataEndTree;
|
||||||
[]
|
[]
|
||||||
|
| BeginArtifact ->
|
||||||
|
[Pdfops.Op_BMC "/Artifact"]
|
||||||
|
| EndArtifact ->
|
||||||
|
[Pdfops.Op_EMC]
|
||||||
|
|
||||||
and ops_of_drawops struct_tree dryrun pdf endpage filename bates batespad num page drawops =
|
and ops_of_drawops struct_tree dryrun pdf endpage filename bates batespad num page drawops =
|
||||||
flatten (map (ops_of_drawop struct_tree dryrun pdf endpage filename bates batespad num page) drawops)
|
flatten (map (ops_of_drawop struct_tree dryrun pdf endpage filename bates batespad num page) drawops)
|
||||||
|
@ -562,28 +570,6 @@ type st =
|
||||||
| StItem of {kind : string; pageobjnum : int option; alt : string option; children : st list}
|
| StItem of {kind : string; pageobjnum : int option; alt : string option; children : st list}
|
||||||
|
|
||||||
(* Build a tree from the MCIDs and structure tree instructions gathered *)
|
(* Build a tree from the MCIDs and structure tree instructions gathered *)
|
||||||
(*let make_structure_tree pdf items =
|
|
||||||
(* Make map of page numbers to pageobjnums, and create a reference to keep track. *)
|
|
||||||
let pagenum = ref 0 in
|
|
||||||
let items_out = ref [] in
|
|
||||||
let pageobjnums =
|
|
||||||
let objnums = Pdf.page_reference_numbers pdf in
|
|
||||||
combine (indx objnums) objnums
|
|
||||||
in
|
|
||||||
(* Process the items, making the st list tree data structure *)
|
|
||||||
let process = function
|
|
||||||
| StDataMCID (n, mcid, alt) ->
|
|
||||||
items_out =| StItem {kind = n; alt; pageobjnum = lookup !pagenum pageobjnums; children = [StMCID mcid]}
|
|
||||||
| StDataPage n ->
|
|
||||||
pagenum := n
|
|
||||||
| StDataBeginTree s ->
|
|
||||||
()
|
|
||||||
| StDataEndTree ->
|
|
||||||
()
|
|
||||||
in
|
|
||||||
iter process items;
|
|
||||||
!items_out*)
|
|
||||||
|
|
||||||
let rec make_structure_tree pageobjnums pdf pagenum = function
|
let rec make_structure_tree pageobjnums pdf pagenum = function
|
||||||
| [] -> []
|
| [] -> []
|
||||||
| StDataMCID (n, mcid, alt)::t ->
|
| StDataMCID (n, mcid, alt)::t ->
|
||||||
|
@ -659,6 +645,7 @@ let write_structure_tree pdf st =
|
||||||
|
|
||||||
let draw ~struct_tree ~fast ~underneath ~filename ~bates ~batespad range pdf drawops =
|
let draw ~struct_tree ~fast ~underneath ~filename ~bates ~batespad range pdf drawops =
|
||||||
(*Printf.printf "%s\n" (string_of_drawops drawops);*)
|
(*Printf.printf "%s\n" (string_of_drawops drawops);*)
|
||||||
|
do_add_artifacts := struct_tree;
|
||||||
resstack := [empty_res ()];
|
resstack := [empty_res ()];
|
||||||
Hashtbl.clear !fontpacks;
|
Hashtbl.clear !fontpacks;
|
||||||
(res ()).time <- Cpdfstrftime.current_time ();
|
(res ()).time <- Cpdfstrftime.current_time ();
|
||||||
|
|
|
@ -55,6 +55,10 @@ type drawops =
|
||||||
| Rise of float
|
| Rise of float
|
||||||
| STag of string
|
| STag of string
|
||||||
| EndSTag
|
| EndSTag
|
||||||
|
| BeginArtifact
|
||||||
|
| EndArtifact
|
||||||
|
|
||||||
|
val do_add_artifacts : bool ref
|
||||||
|
|
||||||
(** Calling [draw fast underneath filename bates batespad range pdf drawops] draws on
|
(** Calling [draw fast underneath filename bates batespad range pdf drawops] draws on
|
||||||
top of all the pages in the range. *)
|
top of all the pages in the range. *)
|
||||||
|
|
|
@ -102,6 +102,10 @@ let endtag () = ()
|
||||||
let endstag () =
|
let endstag () =
|
||||||
addop Cpdfdraw.EndSTag
|
addop Cpdfdraw.EndSTag
|
||||||
let autotags b = ()
|
let autotags b = ()
|
||||||
|
let autoartifacts b =
|
||||||
|
Cpdfdraw.do_add_artifacts := b
|
||||||
|
let artifact () = ()
|
||||||
|
let endartifact () = ()
|
||||||
|
|
||||||
let addrect s =
|
let addrect s =
|
||||||
let x, y, w, h = Cpdfcoord.parse_rectangle (Pdf.empty ()) s in
|
let x, y, w, h = Cpdfcoord.parse_rectangle (Pdf.empty ()) s in
|
||||||
|
|
|
@ -19,6 +19,9 @@ val addstag : string -> unit
|
||||||
val endtag : unit -> unit
|
val endtag : unit -> unit
|
||||||
val endstag : unit -> unit
|
val endstag : unit -> unit
|
||||||
val autotags : bool -> unit
|
val autotags : bool -> unit
|
||||||
|
val artifact : unit -> unit
|
||||||
|
val endartifact : unit -> unit
|
||||||
|
val autoartifacts : bool -> unit
|
||||||
val addrect : string -> unit
|
val addrect : string -> unit
|
||||||
val addto : string -> unit
|
val addto : string -> unit
|
||||||
val addline : string -> unit
|
val addline : string -> unit
|
||||||
|
|
Loading…
Reference in New Issue