///|
#warnings("-unused_value")
fn PdfDocument::pdf_impose_transform_content(
self : PdfDocument,
resources : PdfObject,
matrix : TransformMatrix,
content : ArrayView[PdfObject],
fast : Bool,
) -> Array[PdfObject] raise PdfError {
if fast {
let output : Array[PdfObject] = [
pdf_content_stream_of_ops([Op_q, Op_cm(matrix)]),
]
pdf_impose_push_objects(output, content)
output.push(pdf_content_stream_of_ops([Op_Q]))
output
} else {
let old_ops = self.parse_content_ops_with_resources(resources, content)
let protected_ops = pdf_impose_concat_ops(
pdf_page_protect(old_ops),
old_ops,
)
[
pdf_content_stream_of_ops(
pdf_impose_concat_ops(
[Op_q, Op_cm(matrix)],
pdf_impose_concat_ops(protected_ops, [Op_Q]),
),
),
]
}
}
///|
fn PdfDocument::pdf_impose_combine_page_resources(
self : PdfDocument,
pages : ArrayView[PdfPage],
) -> PdfObject {
let mut resources = pages[0].resources
for index in 1.. PdfObject {
let mut rest = pages[0].rest
for index in 1.. PdfPage raise PdfError {
if pages.length() == 0 {
raise BadNumberArgument("impose: pages must not be empty")
}
let first_page = pages[0]
let transforms = self.pdf_impose_transforms(
fit,
x,
y,
columns,
rtl,
btt,
center,
margin,
first_page.mediabox,
output_mediabox,
fit_extra_hspace,
fit_extra_vspace,
pages.length(),
)
for index in 0..