Smaller splits for -split-bookmarks with object streams
This commit is contained in:
parent
5fb0a3b7cc
commit
838fc69c18
19
cpdf.ml
19
cpdf.ml
|
@ -1290,20 +1290,15 @@ let bookmark_pages level pdf =
|
|||
(function l when l.Pdfmarks.level = level -> Some (Pdfpage.pagenumber_of_target pdf l.Pdfmarks.target) | _ -> None)
|
||||
(Pdfmarks.read_bookmarks pdf))
|
||||
|
||||
let split_at_bookmarks original_filename linearize nobble level spec pdf =
|
||||
(*flprint "split_at_bookmarks\n";*)
|
||||
let pdf_pages = Pdfpage.pages_of_pagetree pdf
|
||||
in let points = bookmark_pages level pdf in
|
||||
let points =
|
||||
lose (fun x -> x <= 0 || x > Pdfpage.endpage pdf) (map pred points) (* FIXME: What actually causes these problems? *)
|
||||
in
|
||||
(*flprint "Points: ";
|
||||
iter (Printf.printf "%i ,") points;
|
||||
flprint "\n";*)
|
||||
let split_at_bookmarks original_filename linearize ~preserve_objstm ~create_objstm nobble level spec pdf =
|
||||
let pdf_pages = Pdfpage.pages_of_pagetree pdf in
|
||||
let points = bookmark_pages level pdf in
|
||||
let points =
|
||||
lose (fun x -> x <= 0 || x > Pdfpage.endpage pdf) (map pred points)
|
||||
in
|
||||
let pts = splitat points (indx pdf_pages) in
|
||||
(*flprint "Calling fast_write_split_pdfs\n";*)
|
||||
fast_write_split_pdfs None false level
|
||||
original_filename linearize false false nobble spec pdf pts pdf_pages
|
||||
original_filename linearize preserve_objstm create_objstm nobble spec pdf pts pdf_pages
|
||||
|
||||
(* Called from cpdflib.ml - different from above *)
|
||||
let split_on_bookmarks pdf level =
|
||||
|
|
2
cpdf.mli
2
cpdf.mli
|
@ -189,7 +189,7 @@ val stamp : bool -> bool -> bool -> int list -> Pdf.t -> Pdf.t -> Pdf.t
|
|||
the fiven level, writing to files with names given by [spec] (see
|
||||
cpdfmanual.pdf). [nobble] is undocumented and should be false. If [linearize]
|
||||
is true, the files will be linearized. *)
|
||||
val split_at_bookmarks : string -> bool -> (Pdf.t -> Pdf.t) -> int -> string -> Pdf.t -> unit
|
||||
val split_at_bookmarks : string -> bool -> preserve_objstm:bool -> create_objstm:bool -> (Pdf.t -> Pdf.t) -> int -> string -> Pdf.t -> unit
|
||||
|
||||
(** Split a PDF on bookmarks of a given level or below. Level 0 is top level. *)
|
||||
val split_on_bookmarks : Pdf.t -> int -> Pdf.t list
|
||||
|
|
|
@ -3324,7 +3324,8 @@ let go () =
|
|||
| [(InFile f, _, _, _, _)] -> f
|
||||
| _ -> ""
|
||||
in
|
||||
Cpdf.split_at_bookmarks filename args.linearize nobble level output_spec pdf
|
||||
Cpdf.split_at_bookmarks filename args.linearize args.preserve_objstm
|
||||
(* Yes *)args.preserve_objstm nobble level output_spec pdf
|
||||
| Stdout -> error "Can't split to standard output"
|
||||
| NoOutputSpecified -> error "Split: No output format specified"
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue