Almost there with single page JBIG2globals
This commit is contained in:
parent
e928818ccb
commit
1bc4c57fec
17
cpdfimage.ml
17
cpdfimage.ml
|
@ -412,24 +412,33 @@ let jbig2_dimensions data =
|
||||||
(bget data 11 * 256 * 256 * 256 + bget data 12 * 256 * 256 + bget data 13 * 256 + bget data 14,
|
(bget data 11 * 256 * 256 * 256 + bget data 12 * 256 * 256 + bget data 13 * 256 + bget data 14,
|
||||||
bget data 15 * 256 * 256 * 256 + bget data 16 * 256 * 256 + bget data 17 * 256 + bget data 18)
|
bget data 15 * 256 * 256 * 256 + bget data 16 * 256 * 256 + bget data 17 * 256 + bget data 18)
|
||||||
|
|
||||||
let obj_of_jbig2_data ?global:int data =
|
let obj_of_jbig2_data ?global data =
|
||||||
let d =
|
let d, extra =
|
||||||
|
let decodeparms, extra =
|
||||||
|
match global with
|
||||||
|
| Some data ->
|
||||||
|
[("/DecodeParms", Pdf.Dictionary [("/JBIG2Globals", Pdf.Indirect 10000)])],
|
||||||
|
[(10000, Pdf.Stream {contents = (Pdf.Dictionary [("/Length", Pdf.Integer (bytes_size data))], Pdf.Got data)})] (* FIXME flate *)
|
||||||
|
| None ->
|
||||||
|
[], []
|
||||||
|
in
|
||||||
let w, h = jbig2_dimensions data in
|
let w, h = jbig2_dimensions data in
|
||||||
[("/Length", Pdf.Integer (Pdfio.bytes_size data));
|
[("/Length", Pdf.Integer (Pdfio.bytes_size data));
|
||||||
("/Filter", Pdf.Name "/JBIG2Decode");
|
("/Filter", Pdf.Name "/JBIG2Decode");
|
||||||
("/Subtype", Pdf.Name "/Image");
|
("/Subtype", Pdf.Name "/Image");
|
||||||
("/BitsPerComponent", Pdf.Integer 1);
|
("/BitsPerComponent", Pdf.Integer 1);
|
||||||
("/ColorSpace", Pdf.Name "/DeviceGray");
|
("/ColorSpace", Pdf.Name "/DeviceGray");
|
||||||
(* FIXME decodeparms for global *)
|
|
||||||
("/Width", Pdf.Integer w);
|
("/Width", Pdf.Integer w);
|
||||||
("/Height", Pdf.Integer h)]
|
("/Height", Pdf.Integer h)]
|
||||||
|
@ decodeparms, extra
|
||||||
in
|
in
|
||||||
Pdf.Stream {contents = (Pdf.Dictionary d, Pdf.Got data)}, []
|
Pdf.Stream {contents = (Pdf.Dictionary d, Pdf.Got data)}, extra
|
||||||
|
|
||||||
let image_of_input fobj i =
|
let image_of_input fobj i =
|
||||||
let pdf = Pdf.empty () in
|
let pdf = Pdf.empty () in
|
||||||
let data = Pdfio.bytes_of_input i 0 i.Pdfio.in_channel_length in
|
let data = Pdfio.bytes_of_input i 0 i.Pdfio.in_channel_length in
|
||||||
let obj, extras = fobj data in
|
let obj, extras = fobj data in
|
||||||
|
iter (Pdf.addobj_given_num pdf) extras;
|
||||||
let w = match Pdf.lookup_direct pdf "/Width" obj with Some x -> Pdf.getnum pdf x | _ -> assert false in
|
let w = match Pdf.lookup_direct pdf "/Width" obj with Some x -> Pdf.getnum pdf x | _ -> assert false in
|
||||||
let h = match Pdf.lookup_direct pdf "/Height" obj with Some x -> Pdf.getnum pdf x | _ -> assert false in
|
let h = match Pdf.lookup_direct pdf "/Height" obj with Some x -> Pdf.getnum pdf x | _ -> assert false in
|
||||||
let page =
|
let page =
|
||||||
|
|
Loading…
Reference in New Issue