tidying up -process-images
This commit is contained in:
parent
ba81e5fc6e
commit
3d0a4676a5
13
cpdfimage.ml
13
cpdfimage.ml
|
@ -5,7 +5,7 @@ open Cpdferror
|
||||||
let debug_image_processing = ref false
|
let debug_image_processing = ref false
|
||||||
|
|
||||||
let remove x =
|
let remove x =
|
||||||
try (*Printf.printf "%s\n" x;*) Sys.remove x with _ -> ()
|
try Printf.printf "%s\n" x; Sys.remove x with _ -> ()
|
||||||
|
|
||||||
let pnm_white ch = output_char ch ' '
|
let pnm_white ch = output_char ch ' '
|
||||||
let pnm_newline ch = output_char ch '\n'
|
let pnm_newline ch = output_char ch '\n'
|
||||||
|
@ -709,7 +709,11 @@ let lossless_resample_target_dpi objnum pdf ~pixel_threshold ~length_threshold ~
|
||||||
if real_factor < 100. then
|
if real_factor < 100. then
|
||||||
lossless_resample pdf ~pixel_threshold ~length_threshold ~factor:real_factor ~interpolate ~path_to_convert s dict reference
|
lossless_resample pdf ~pixel_threshold ~length_threshold ~factor:real_factor ~interpolate ~path_to_convert s dict reference
|
||||||
|
|
||||||
|
let complain_jbig2enc path =
|
||||||
|
if path = "" then error "Specify jbig2enc location with -jbig2enc"
|
||||||
|
|
||||||
let recompress_1bpp_jbig2_lossless ~pixel_threshold ~length_threshold ~path_to_jbig2enc pdf s dict reference =
|
let recompress_1bpp_jbig2_lossless ~pixel_threshold ~length_threshold ~path_to_jbig2enc pdf s dict reference =
|
||||||
|
complain_jbig2enc path_to_jbig2enc;
|
||||||
let old = !reference in
|
let old = !reference in
|
||||||
let restore () = reference := old in
|
let restore () = reference := old in
|
||||||
let w = match Pdf.lookup_direct pdf "/Width" dict with Some (Pdf.Integer i) -> i | _ -> error "bad width" in
|
let w = match Pdf.lookup_direct pdf "/Width" dict with Some (Pdf.Integer i) -> i | _ -> error "bad width" in
|
||||||
|
@ -734,7 +738,9 @@ let recompress_1bpp_jbig2_lossless ~pixel_threshold ~length_threshold ~path_to_j
|
||||||
let command = Filename.quote_command ~stdout:out2 path_to_jbig2enc ["-d"; "-p"; out] in
|
let command = Filename.quote_command ~stdout:out2 path_to_jbig2enc ["-d"; "-p"; out] in
|
||||||
(*Printf.printf "%S\n" command;*) Sys.command command
|
(*Printf.printf "%S\n" command;*) Sys.command command
|
||||||
in
|
in
|
||||||
if retcode = 0 then
|
if retcode <> 0 then
|
||||||
|
restore ()
|
||||||
|
else
|
||||||
begin
|
begin
|
||||||
let result = open_in_bin out2 in
|
let result = open_in_bin out2 in
|
||||||
let newsize = in_channel_length result in
|
let newsize = in_channel_length result in
|
||||||
|
@ -761,6 +767,7 @@ let recompress_1bpp_jbig2_lossless ~pixel_threshold ~length_threshold ~path_to_j
|
||||||
|
|
||||||
(* Recompress 1bpp images (except existing JBIG2 compressed ones) to lossy jbig2 *)
|
(* Recompress 1bpp images (except existing JBIG2 compressed ones) to lossy jbig2 *)
|
||||||
let preprocess_jbig2_lossy ~path_to_jbig2enc ~jbig2_lossy_threshold ~length_threshold ~pixel_threshold ~dpi_threshold inrange highdpi pdf =
|
let preprocess_jbig2_lossy ~path_to_jbig2enc ~jbig2_lossy_threshold ~length_threshold ~pixel_threshold ~dpi_threshold inrange highdpi pdf =
|
||||||
|
complain_jbig2enc path_to_jbig2enc;
|
||||||
let objnum_name_pairs = ref [] in
|
let objnum_name_pairs = ref [] in
|
||||||
let process_obj objnum s =
|
let process_obj objnum s =
|
||||||
match s with
|
match s with
|
||||||
|
@ -791,7 +798,7 @@ let preprocess_jbig2_lossy ~path_to_jbig2enc ~jbig2_lossy_threshold ~length_thre
|
||||||
let data = match s with Pdf.Stream {contents = _, Pdf.Got d} -> d | _ -> assert false in
|
let data = match s with Pdf.Stream {contents = _, Pdf.Got d} -> d | _ -> assert false in
|
||||||
pnm_to_channel_1_inverted fh w h data;
|
pnm_to_channel_1_inverted fh w h data;
|
||||||
close_out fh;
|
close_out fh;
|
||||||
if !debug_image_processing then Printf.printf "obj %i is suitable\n%!" objnum;
|
if !debug_image_processing then Printf.printf "JBIG2Lossy: obj %i is suitable\n%!" objnum;
|
||||||
objnum_name_pairs := (objnum, out)::!objnum_name_pairs
|
objnum_name_pairs := (objnum, out)::!objnum_name_pairs
|
||||||
end
|
end
|
||||||
| _ -> () (* not a 1bpp image *)
|
| _ -> () (* not a 1bpp image *)
|
||||||
|
|
BIN
cpdfmanual.pdf
BIN
cpdfmanual.pdf
Binary file not shown.
|
@ -3895,7 +3895,7 @@ Method & Effect\\\hline
|
||||||
|
|
||||||
\noindent It is not currently possible to reprocess lossless JBIG2 into lossy JBIG2, nor is it possible to recompress into CCITT.
|
\noindent It is not currently possible to reprocess lossless JBIG2 into lossy JBIG2, nor is it possible to recompress into CCITT.
|
||||||
|
|
||||||
NB: CYMK images will be converted to RGB by some of these processes. A future version of cpdf will remove this limitation.
|
NB: CYMK images will be converted to RGB or untouched by some of these processes. A future version of cpdf will remove this limitation.
|
||||||
|
|
||||||
\begin{cpdflib}
|
\begin{cpdflib}
|
||||||
\clearpage
|
\clearpage
|
||||||
|
|
Loading…
Reference in New Issue