mirror of
https://github.com/johnwhitington/cpdf-source.git
synced 2024-12-27 09:13:04 +01:00
Remove squeeze debug commands
This commit is contained in:
parent
8279a06ec0
commit
05a7d1a9d7
@ -49,7 +49,10 @@ let pdfobjeq pdf x y =
|
|||||||
begin match y with Pdf.Stream _ -> Pdf.getstream y | _ -> () end;
|
begin match y with Pdf.Stream _ -> Pdf.getstream y | _ -> () end;
|
||||||
compare x y
|
compare x y
|
||||||
|
|
||||||
|
let memory () = Printf.printf "%i bytes in use\n%!" (Gc.(quick_stat ()).heap_words * 4)
|
||||||
|
|
||||||
let really_squeeze pdf =
|
let really_squeeze pdf =
|
||||||
|
(*Printf.printf "Beginning of really_squeeze: %!"; memory ();*)
|
||||||
let objs = ref [] in
|
let objs = ref [] in
|
||||||
Pdf.objiter (fun objnum _ -> objs := objnum :: !objs) pdf;
|
Pdf.objiter (fun objnum _ -> objs := objnum :: !objs) pdf;
|
||||||
let toprocess =
|
let toprocess =
|
||||||
@ -57,6 +60,7 @@ let really_squeeze pdf =
|
|||||||
(fun x -> length x > 1)
|
(fun x -> length x > 1)
|
||||||
(collate (pdfobjeq pdf) (sort (pdfobjeq pdf) !objs))
|
(collate (pdfobjeq pdf) (sort (pdfobjeq pdf) !objs))
|
||||||
in
|
in
|
||||||
|
(*Printf.printf "Stage 1 done%!\n"; memory ();*)
|
||||||
(* Remove any pools of objects which are page objects, since Adobe Reader
|
(* Remove any pools of objects which are page objects, since Adobe Reader
|
||||||
* gets confused when there are duplicate page objects. *)
|
* gets confused when there are duplicate page objects. *)
|
||||||
let toprocess =
|
let toprocess =
|
||||||
@ -69,6 +73,7 @@ let really_squeeze pdf =
|
|||||||
| _ -> Some l)
|
| _ -> Some l)
|
||||||
toprocess
|
toprocess
|
||||||
in
|
in
|
||||||
|
(*Printf.printf "Stage 2 done%!\n"; memory ();*)
|
||||||
let pdfr = ref pdf in
|
let pdfr = ref pdf in
|
||||||
let changetable = Hashtbl.create 100 in
|
let changetable = Hashtbl.create 100 in
|
||||||
iter
|
iter
|
||||||
@ -79,9 +84,15 @@ let really_squeeze pdf =
|
|||||||
Pdf.renumber is run twice. This is bizarre, since Pdf.renumber is
|
Pdf.renumber is run twice. This is bizarre, since Pdf.renumber is
|
||||||
an old, well-understood function in use for years -- what is
|
an old, well-understood function in use for years -- what is
|
||||||
going on? Furthermore, if we run it 3 times, it gets bigger again! *)
|
going on? Furthermore, if we run it 3 times, it gets bigger again! *)
|
||||||
|
(*Printf.printf "Stage 3 done\n%!"; memory ();*)
|
||||||
pdfr := Pdf.renumber changetable !pdfr;
|
pdfr := Pdf.renumber changetable !pdfr;
|
||||||
|
(*Printf.printf "Stage 4 done\n%!"; memory ();*)
|
||||||
pdfr := Pdf.renumber changetable !pdfr;
|
pdfr := Pdf.renumber changetable !pdfr;
|
||||||
|
(*Printf.printf "Stage 5 done\n%!"; memory ();*)
|
||||||
Pdf.remove_unreferenced !pdfr;
|
Pdf.remove_unreferenced !pdfr;
|
||||||
|
(*Printf.printf "Stage 6 done\n%!"; memory ();*)
|
||||||
|
(*Gc.compact ();*)
|
||||||
|
(*Printf.printf "Compacted:\n%!"; memory ();*)
|
||||||
pdf.Pdf.root <- !pdfr.Pdf.root;
|
pdf.Pdf.root <- !pdfr.Pdf.root;
|
||||||
pdf.Pdf.objects <- !pdfr.Pdf.objects;
|
pdf.Pdf.objects <- !pdfr.Pdf.objects;
|
||||||
pdf.Pdf.trailerdict <- !pdfr.Pdf.trailerdict
|
pdf.Pdf.trailerdict <- !pdfr.Pdf.trailerdict
|
||||||
@ -96,6 +107,7 @@ this object will fail, and we bail out. *)
|
|||||||
(* FIXME: XObjects inside xobjects? *)
|
(* FIXME: XObjects inside xobjects? *)
|
||||||
let xobjects_done = ref []
|
let xobjects_done = ref []
|
||||||
|
|
||||||
|
|
||||||
let squeeze_form_xobject pdf objnum =
|
let squeeze_form_xobject pdf objnum =
|
||||||
if mem objnum !xobjects_done then () else
|
if mem objnum !xobjects_done then () else
|
||||||
begin
|
begin
|
||||||
|
Loading…
Reference in New Issue
Block a user