Better error handling for -png and -jpeg
This commit is contained in:
parent
7dc34a8d93
commit
5c0ea98266
|
@ -1917,7 +1917,6 @@ let setdash s =
|
||||||
with
|
with
|
||||||
_ -> error "Dash pattern elements must one or more numbers"
|
_ -> error "Dash pattern elements must one or more numbers"
|
||||||
|
|
||||||
|
|
||||||
let setmatrix s =
|
let setmatrix s =
|
||||||
match readfloats s with
|
match readfloats s with
|
||||||
| [a; b; c; d; e; f] ->
|
| [a; b; c; d; e; f] ->
|
||||||
|
@ -1990,25 +1989,17 @@ let image_of_input fobj i =
|
||||||
[Pdfops.stream_of_ops
|
[Pdfops.stream_of_ops
|
||||||
[Pdfops.Op_cm (Pdftransform.matrix_of_transform [Pdftransform.Translate (0., 0.);
|
[Pdfops.Op_cm (Pdftransform.matrix_of_transform [Pdftransform.Translate (0., 0.);
|
||||||
Pdftransform.Scale ((0., 0.), w, h)]);
|
Pdftransform.Scale ((0., 0.), w, h)]);
|
||||||
Pdfops.Op_Do "/Im0"]];
|
Pdfops.Op_Do "/I0"]];
|
||||||
Pdfpage.mediabox = Pdf.Array [Pdf.Real 0.; Pdf.Real 0.; Pdf.Real w; Pdf.Real h];
|
Pdfpage.mediabox = Pdf.Array [Pdf.Real 0.; Pdf.Real 0.; Pdf.Real w; Pdf.Real h];
|
||||||
Pdfpage.resources =
|
Pdfpage.resources =
|
||||||
Pdf.Dictionary
|
Pdf.Dictionary
|
||||||
["/XObject", Pdf.Dictionary ["/Im0", Pdf.Indirect (Pdf.addobj pdf obj)]];
|
["/XObject", Pdf.Dictionary ["/I0", Pdf.Indirect (Pdf.addobj pdf obj)]];
|
||||||
Pdfpage.rotate = Pdfpage.Rotate0;
|
Pdfpage.rotate = Pdfpage.Rotate0;
|
||||||
Pdfpage.rest = Pdf.Dictionary []}
|
Pdfpage.rest = Pdf.Dictionary []}
|
||||||
in
|
in
|
||||||
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
|
||||||
|
|
||||||
let set_input_jpeg s =
|
|
||||||
args.original_filename <- s;
|
|
||||||
args.create_objstm <- true;
|
|
||||||
let fh = open_in_bin s in
|
|
||||||
let pdf = image_of_input obj_of_jpeg_data (Pdfio.input_of_channel fh) in
|
|
||||||
close_in fh;
|
|
||||||
args.inputs <- (AlreadyInMemory pdf, "all", "", "", ref false, None)::args.inputs
|
|
||||||
|
|
||||||
let obj_of_png_data data =
|
let obj_of_png_data data =
|
||||||
let png = Cpdfpng.read_png (Pdfio.input_of_bytes data) in
|
let png = Cpdfpng.read_png (Pdfio.input_of_bytes data) in
|
||||||
let d =
|
let d =
|
||||||
|
@ -2036,15 +2027,19 @@ let addpng n =
|
||||||
let data = bytes_of_string (contents_of_file filename) in
|
let data = bytes_of_string (contents_of_file filename) in
|
||||||
addop (Cpdfdraw.ImageXObject (name, obj_of_png_data data))
|
addop (Cpdfdraw.ImageXObject (name, obj_of_png_data data))
|
||||||
|
|
||||||
let png_of_input i = Pdf.empty ()
|
let set_input_image f s =
|
||||||
|
try
|
||||||
let set_input_png s =
|
let fh = open_in_bin s in
|
||||||
|
let pdf = image_of_input f (Pdfio.input_of_channel fh) in
|
||||||
|
try close_in fh with _ -> ();
|
||||||
args.original_filename <- s;
|
args.original_filename <- s;
|
||||||
args.create_objstm <- true;
|
args.create_objstm <- true;
|
||||||
let fh = open_in_bin s in
|
|
||||||
let pdf = image_of_input obj_of_png_data (Pdfio.input_of_channel fh) in
|
|
||||||
close_in fh;
|
|
||||||
args.inputs <- (AlreadyInMemory pdf, "all", "", "", ref false, None)::args.inputs
|
args.inputs <- (AlreadyInMemory pdf, "all", "", "", ref false, None)::args.inputs
|
||||||
|
with
|
||||||
|
Sys_error _ -> error "Image file not found"
|
||||||
|
|
||||||
|
let set_input_png = set_input_image obj_of_png_data
|
||||||
|
let set_input_jpeg = set_input_image obj_of_jpeg_data
|
||||||
|
|
||||||
let addimage s =
|
let addimage s =
|
||||||
addop (Cpdfdraw.Image s)
|
addop (Cpdfdraw.Image s)
|
||||||
|
|
Loading…
Reference in New Issue