Beginning xobject experiment

This commit is contained in:
John Whitington 2023-03-24 17:00:17 +00:00
parent 833e60e270
commit 4bd79e01bb
1 changed files with 19 additions and 0 deletions

View File

@ -83,7 +83,26 @@ let hard_box pdf range boxname mediabox_if_missing fast =
pdf pdf
range range
(* Convert a page to a Form XObject *)
let xobject_of_page pdf page =
let concatted_streams =
let streams = map (Pdf.direct pdf) page.Pdfpage.content in
iter (Pdfcodec.decode_pdfstream pdf) streams;
let bytess =
map (function Pdf.Stream {contents = (_, Got x)} -> x | _ -> raise (Pdf.PDFError "xobject_of_page")) streams
in
Pdfops.concat_bytess bytess
in
Pdf.Stream
{contents =
(Pdf.Dictionary [("/Type", Pdf.Name "/XObject");
("/Subtype", Pdf.Name "/Form");
("/Resources", page.Pdfpage.resources);
("/BBox", page.Pdfpage.mediabox)],
Got concatted_streams)}
let shift_page ?(fast=false) dxdylist pdf pnum page = let shift_page ?(fast=false) dxdylist pdf pnum page =
let xobj = xobject_of_page pdf page in
let dx, dy = List.nth dxdylist (pnum - 1) in let dx, dy = List.nth dxdylist (pnum - 1) in
let transform_op = let transform_op =
Pdfops.Op_cm (Pdftransform.matrix_of_op (Pdftransform.Translate (dx, dy))) Pdfops.Op_cm (Pdftransform.matrix_of_op (Pdftransform.Translate (dx, dy)))