mirror of
https://github.com/johnwhitington/cpdf-source.git
synced 2025-02-17 12:20:43 +01:00
Fixed -squeeze-log-to bug
This commit is contained in:
parent
9054a246ae
commit
3807738491
2
cpdf.ml
2
cpdf.ml
@ -2280,12 +2280,14 @@ let change_pattern_matrices_page pdf tr page =
|
|||||||
|
|
||||||
(* Apply transformations to any annotations in /Annots (i.e their /Rect entries) *)
|
(* Apply transformations to any annotations in /Annots (i.e their /Rect entries) *)
|
||||||
let transform_annotations pdf transform rest =
|
let transform_annotations pdf transform rest =
|
||||||
|
(*Printf.printf "in transform_annotations\n";*)
|
||||||
match Pdf.lookup_direct pdf "/Annots" rest with
|
match Pdf.lookup_direct pdf "/Annots" rest with
|
||||||
| Some (Pdf.Array annots) ->
|
| Some (Pdf.Array annots) ->
|
||||||
(* Always indirect references, so alter in place *)
|
(* Always indirect references, so alter in place *)
|
||||||
List.iter
|
List.iter
|
||||||
(function
|
(function
|
||||||
| Pdf.Indirect i ->
|
| Pdf.Indirect i ->
|
||||||
|
(*Printf.printf "Found an annotation to modify...\n";*)
|
||||||
let annot = Pdf.lookup_obj pdf i in
|
let annot = Pdf.lookup_obj pdf i in
|
||||||
let rect' =
|
let rect' =
|
||||||
match Pdf.lookup_direct pdf "/Rect" annot with
|
match Pdf.lookup_direct pdf "/Rect" annot with
|
||||||
|
@ -2462,6 +2462,12 @@ let get_single_pdf_nodecrypt read_lazy =
|
|||||||
|
|
||||||
let filenames = null_hash ()
|
let filenames = null_hash ()
|
||||||
|
|
||||||
|
let squeeze_logto filename x =
|
||||||
|
let fh = open_out_gen [Open_wronly; Open_creat] 0o666 filename in
|
||||||
|
seek_out fh (out_channel_length fh);
|
||||||
|
output_string fh x;
|
||||||
|
close_out fh
|
||||||
|
|
||||||
(* This now memoizes on the name of the file to make sure we only load each
|
(* This now memoizes on the name of the file to make sure we only load each
|
||||||
file once *)
|
file once *)
|
||||||
let rec get_pdf_from_input_kind ?(read_lazy=false) ?(decrypt=true) ?(fail=false) ((_, x, u, o, y, revision) as input) op ik =
|
let rec get_pdf_from_input_kind ?(read_lazy=false) ?(decrypt=true) ?(fail=false) ((_, x, u, o, y, revision) as input) op ik =
|
||||||
@ -2491,7 +2497,11 @@ let rec get_pdf_from_input_kind ?(read_lazy=false) ?(decrypt=true) ?(fail=false)
|
|||||||
begin
|
begin
|
||||||
let size = filesize s in
|
let size = filesize s in
|
||||||
initial_file_size := size;
|
initial_file_size := size;
|
||||||
if !logto = None then Printf.printf "Initial file size is %i bytes\n" size
|
let str = Printf.sprintf "Initial file size is %i bytes\n" size in
|
||||||
|
begin match !logto with
|
||||||
|
| None -> print_string str
|
||||||
|
| Some filename -> squeeze_logto filename str
|
||||||
|
end
|
||||||
end;
|
end;
|
||||||
begin try Hashtbl.find filenames s with
|
begin try Hashtbl.find filenames s with
|
||||||
Not_found ->
|
Not_found ->
|
||||||
@ -2635,11 +2645,17 @@ let really_write_pdf ?(encryption = None) ?(is_decompress=false) mk_id pdf outna
|
|||||||
end;
|
end;
|
||||||
if args.squeeze then
|
if args.squeeze then
|
||||||
let s = filesize outname in
|
let s = filesize outname in
|
||||||
if !logto = None then
|
begin
|
||||||
Printf.printf
|
let str =
|
||||||
"Final file size is %i bytes, %.2f%% of original.\n"
|
Printf.sprintf
|
||||||
s
|
"Final file size is %i bytes, %.2f%% of original.\n"
|
||||||
((float s /. float !initial_file_size) *. 100.)
|
s
|
||||||
|
((float s /. float !initial_file_size) *. 100.)
|
||||||
|
in
|
||||||
|
match !logto with
|
||||||
|
| None -> print_string str
|
||||||
|
| Some filename -> squeeze_logto filename str
|
||||||
|
end
|
||||||
|
|
||||||
let write_pdf ?(encryption = None) ?(is_decompress=false) mk_id pdf =
|
let write_pdf ?(encryption = None) ?(is_decompress=false) mk_id pdf =
|
||||||
if args.debugcrypt then Printf.printf "write_pdf\n";
|
if args.debugcrypt then Printf.printf "write_pdf\n";
|
||||||
|
BIN
cpdfmanual.pdf
BIN
cpdfmanual.pdf
Binary file not shown.
@ -1124,14 +1124,16 @@ PDF, use:
|
|||||||
|
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
$ ./cpdf -squeeze in.pdf -o out.pdf
|
$ ./cpdf -squeeze in.pdf -o out.pdf
|
||||||
|
Initial file size is 238169 bytes
|
||||||
Beginning squeeze: 123847 objects
|
Beginning squeeze: 123847 objects
|
||||||
Squeezing... Down to 114860 objects
|
Squeezing... Down to 114860 objects
|
||||||
Squeezing... Down to 114842 objects
|
Squeezing... Down to 114842 objects
|
||||||
Squeezing page data
|
Squeezing page data
|
||||||
Recompressing document
|
Recompressing document
|
||||||
|
Final file size is 187200 bytes, 78.60% of original.
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
\noindent The \texttt{-squeeze-log-to <filename>} option writes the log to the given file instead of to standard output.
|
\noindent The \texttt{-squeeze-log-to <filename>} option writes the log to the given file instead of to standard output. Log contents is appended to the end of the log file, preserving existing contents.
|
||||||
|
|
||||||
\chapter{Bookmarks}
|
\chapter{Bookmarks}
|
||||||
\begin{framed}
|
\begin{framed}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user