Skeleton for -namespace

This commit is contained in:
John Whitington 2024-09-18 15:31:24 +01:00
parent e3f9631656
commit fc28d8c469
5 changed files with 21 additions and 0 deletions

View File

@ -404,6 +404,9 @@ let spray_outputs = ref []
(* A list of PDFs to be output, if no output method was specified. *) (* A list of PDFs to be output, if no output method was specified. *)
let output_pdfs : Pdf.t list ref = ref [] let output_pdfs : Pdf.t list ref = ref []
let standard_namespace = "http://iso.org/pdf/ssn"
let pdf2_namespace = "http://iso.org/pdf2/ssn"
type font = type font =
| StandardFont of Pdftext.standard_font | StandardFont of Pdftext.standard_font
| EmbeddedFont of string | EmbeddedFont of string
@ -1885,6 +1888,11 @@ let setreplaceobj s =
| [a; b] -> args.op <- Some (ReplaceObj (a, b)) | [a; b] -> args.op <- Some (ReplaceObj (a, b))
| _ -> error "replace_obj: bad specification" | _ -> error "replace_obj: bad specification"
let expand_namespace = function
| "PDF" -> standard_namespace
| "PDF2" -> pdf2_namespace
| x -> x
let specs = let specs =
[("-version", [("-version",
Arg.Unit (setop Version), Arg.Unit (setop Version),
@ -2813,6 +2821,7 @@ let specs =
("-artifact", Arg.Unit (fun _ -> Cpdfdrawcontrol.artifact ()), " Begin an artifact"); ("-artifact", Arg.Unit (fun _ -> Cpdfdrawcontrol.artifact ()), " Begin an artifact");
("-end-artifact", Arg.Unit (fun _ -> Cpdfdrawcontrol.endartifact ()), "End 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"); ("-no-auto-artifacts", Arg.Unit (fun _ -> Cpdfdrawcontrol.autoartifacts false), " Don't mark untagged content as artifacts");
("-namespace", Arg.String (fun s -> Cpdfdrawcontrol.addnamespace (expand_namespace s)), " Set the structure tree namespace");
("-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");

View File

@ -64,6 +64,7 @@ type drawops =
| EndSTag | EndSTag
| BeginArtifact | BeginArtifact
| EndArtifact | EndArtifact
| Namespace of string
(*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 ^ ")"
@ -238,6 +239,11 @@ let mcidr = ref ~-1
let mcid () = (incr mcidr; !mcidr) let mcid () = (incr mcidr; !mcidr)
let mcpage = ref ~-1 let mcpage = ref ~-1
let standard_namespace = "http://iso.org/pdf/ssn"
let pdf2_namespace = "http://iso.org/pdf2/ssn"
let namespace = ref standard_namespace
(* The structure data, as it is created, in flat form. Later on, this will be (* The structure data, as it is created, in flat form. Later on, this will be
reconstructed into a structure tree. *) reconstructed into a structure tree. *)
type structdata = type structdata =
@ -429,6 +435,7 @@ let rec ops_of_drawop struct_tree dryrun pdf endpage filename bates batespad num
| EndSTag -> if not dryrun then structdata =| StDataEndTree; [] | EndSTag -> if not dryrun then structdata =| StDataEndTree; []
| BeginArtifact -> [Pdfops.Op_BMC "/BeginArtifact"] | BeginArtifact -> [Pdfops.Op_BMC "/BeginArtifact"]
| EndArtifact -> [Pdfops.Op_BMC "/EndArtifact"] | EndArtifact -> [Pdfops.Op_BMC "/EndArtifact"]
| Namespace s -> if not dryrun then namespace := s; []
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)

View File

@ -59,6 +59,7 @@ type drawops =
| EndSTag | EndSTag
| BeginArtifact | BeginArtifact
| EndArtifact | EndArtifact
| Namespace of string
val do_add_artifacts : bool ref val do_add_artifacts : bool ref

View File

@ -119,6 +119,9 @@ let artifact () =
let endartifact () = let endartifact () =
addop Cpdfdraw.EndArtifact addop Cpdfdraw.EndArtifact
let addnamespace s =
addop (Cpdfdraw.Namespace s)
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
addop (Cpdfdraw.Rect (x, y, w, h)) addop (Cpdfdraw.Rect (x, y, w, h))

View File

@ -19,6 +19,7 @@ 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 addnamespace : string -> unit
val artifact : unit -> unit val artifact : unit -> unit
val endartifact : unit -> unit val endartifact : unit -> unit
val autoartifacts : bool -> unit val autoartifacts : bool -> unit