Tidying up
This commit is contained in:
parent
68312dc177
commit
aafc455fd2
34
cpdfimage.ml
34
cpdfimage.ml
|
@ -490,15 +490,7 @@ let image_of_input fobj i =
|
||||||
let pdf, pageroot = Pdfpage.add_pagetree [page] pdf in
|
let pdf, pageroot = Pdfpage.add_pagetree [page] pdf in
|
||||||
Pdfpage.add_root pageroot [] pdf
|
Pdfpage.add_root pageroot [] pdf
|
||||||
|
|
||||||
(* FIXME Only do if quality < 100 *)
|
|
||||||
(* FIXME Error when path_to_convert not defined *)
|
|
||||||
(* FIXME Need the "is it smaller" check from Pdfcodec.encode here too? *)
|
|
||||||
(* FIXME (this appears to make the file larger than ./cpdf ~/repos/pdfs/PDFTests/main128fail.pdf -recrypt -o out.pdf. Why? Seems to not create new object streams. Make it do so, since this a compression mechanism? An empty Pdf.objiter should not blow up a file like this!) *)
|
|
||||||
(* FIXME What about predictors? Audit to see if files get smaller. *)
|
|
||||||
(* FIXME if lossy only 5% smaller, ignore? Set this parameter... *)
|
|
||||||
(* FIXME error handling for Sys.remove, others *)
|
|
||||||
(* FIXME Use raw format for all, and make it fast *)
|
|
||||||
(* FIXME what are the best jbig2enc parameters *)
|
|
||||||
let jpeg_to_jpeg pdf ~q ~path_to_convert s dict reference =
|
let jpeg_to_jpeg pdf ~q ~path_to_convert s dict reference =
|
||||||
Pdf.getstream s;
|
Pdf.getstream s;
|
||||||
let out = Filename.temp_file "cpdf" "convertin" ^ ".jpg" in
|
let out = Filename.temp_file "cpdf" "convertin" ^ ".jpg" in
|
||||||
|
@ -600,7 +592,7 @@ let lossless_to_jpeg pdf ~qlossless ~path_to_convert s dict reference =
|
||||||
let recompress_1bpp_jbig2_lossless ~path_to_jbig2enc pdf s dict reference =
|
let recompress_1bpp_jbig2_lossless ~path_to_jbig2enc pdf s dict reference =
|
||||||
let size = match Pdf.lookup_direct pdf "/Length" dict with Some (Pdf.Integer i) -> i | _ -> 0 in
|
let size = match Pdf.lookup_direct pdf "/Length" dict with Some (Pdf.Integer i) -> i | _ -> 0 in
|
||||||
Pdfcodec.decode_pdfstream_until_unknown pdf s;
|
Pdfcodec.decode_pdfstream_until_unknown pdf s;
|
||||||
begin match Pdf.lookup_direct pdf "/Filter" (fst !reference) with Some _ -> () | None ->
|
match Pdf.lookup_direct pdf "/Filter" (fst !reference) with Some _ -> () | None ->
|
||||||
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
|
||||||
let h = match Pdf.lookup_direct pdf "/Height" dict with Some (Pdf.Integer i) -> i | _ -> error "bad height" in
|
let h = match Pdf.lookup_direct pdf "/Height" dict with Some (Pdf.Integer i) -> i | _ -> error "bad height" in
|
||||||
let out = Filename.temp_file "cpdf" "convertin" ^ ".pnm" in
|
let out = Filename.temp_file "cpdf" "convertin" ^ ".pnm" in
|
||||||
|
@ -619,7 +611,7 @@ let recompress_1bpp_jbig2_lossless ~path_to_jbig2enc pdf s dict reference =
|
||||||
let newsize = in_channel_length result in
|
let newsize = in_channel_length result in
|
||||||
if newsize < size then
|
if newsize < size then
|
||||||
begin
|
begin
|
||||||
Printf.printf "1bpp to JBIG2 %i -> %i \n" size newsize;
|
(*Printf.printf "1bpp to JBIG2 %i -> %i \n" size newsize;*)
|
||||||
reference :=
|
reference :=
|
||||||
(Pdf.remove_dict_entry
|
(Pdf.remove_dict_entry
|
||||||
(Pdf.add_dict_entry
|
(Pdf.add_dict_entry
|
||||||
|
@ -630,16 +622,22 @@ let recompress_1bpp_jbig2_lossless ~path_to_jbig2enc pdf s dict reference =
|
||||||
end;
|
end;
|
||||||
close_in result
|
close_in result
|
||||||
end;
|
end;
|
||||||
(*Sys.remove out;
|
Sys.remove out;
|
||||||
Sys.remove out2*)
|
Sys.remove out2
|
||||||
end
|
|
||||||
|
|
||||||
(* 4. Read in result *)
|
|
||||||
(* 5. Set data and dictionary *)
|
|
||||||
|
|
||||||
(* JPEG to JPEG: RGB and CMYK JPEGS *)
|
(* JPEG to JPEG: RGB and CMYK JPEGS *)
|
||||||
(* Lossless to JPEG: 8bpp Grey, 8bpp RGB, 8bpp CMYK including separation add ICCBased colourspaces *)
|
(* Lossless to JPEG: 8bpp Grey, 8bpp RGB, 8bpp CMYK including separation and ICCBased colourspaces *)
|
||||||
(* 1 bit: anything to JBIG2 lossless (no globals) *)
|
(* 1 bit: anything to JBIG2 lossless (no globals) *)
|
||||||
|
(* FIXME Only do if quality < 100 *)
|
||||||
|
(* FIXME Error when path_to_convert not defined *)
|
||||||
|
(* FIXME Need the "is it smaller" check from Pdfcodec.encode here too? *)
|
||||||
|
(* FIXME (this appears to make the file larger than ./cpdf ~/repos/pdfs/PDFTests/main128fail.pdf -recrypt -o out.pdf. Why? Seems to not create new object streams. Make it do so, since this a compression mechanism? An empty Pdf.objiter should not blow up a file like this!) *)
|
||||||
|
(* FIXME What about predictors? Audit to see if files get smaller. *)
|
||||||
|
(* FIXME if lossy only 5% smaller, ignore? Set this parameter... *)
|
||||||
|
(* FIXME error handling for Sys.remove, others *)
|
||||||
|
(* FIXME Use raw format for all, and make it fast *)
|
||||||
|
(* FIXME what are the best jbig2enc parameters *)
|
||||||
|
(* FIXME JBIG2 If we fail, need to have saved old one, otherwise it will no longer be CCITT encoded! Others too! *)
|
||||||
let process ?q ?qlossless ?onebppmethod pdf ~path_to_jbig2enc ~path_to_convert =
|
let process ?q ?qlossless ?onebppmethod pdf ~path_to_jbig2enc ~path_to_convert =
|
||||||
let process_obj _ s =
|
let process_obj _ s =
|
||||||
match s with
|
match s with
|
||||||
|
|
Loading…
Reference in New Issue