///|
#warnings("-unused_value")
fn PdfDocument::pdf_impose_transform_content(
self : PdfDocument,
resources : @syntax.PdfObject,
matrix : @geometry.TransformMatrix,
content : ArrayView[@syntax.PdfObject],
fast : Bool,
) -> Array[@syntax.PdfObject] raise @core.PdfError {
if fast {
let output : Array[@syntax.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_page_concat_ops(pdf_page_protect(old_ops), old_ops)
[
pdf_content_stream_of_ops(
pdf_page_concat_ops(
[Op_q, Op_cm(matrix)],
pdf_page_concat_ops(protected_ops, [Op_Q]),
),
),
]
}
}
///|
fn PdfDocument::pdf_impose_combine_page_resources(
self : PdfDocument,
pages : ArrayView[@page.PdfPage],
) -> @syntax.PdfObject {
let mut resources = pages[0].resources
for index in 1.. @syntax.PdfObject {
let mut rest = pages[0].rest
for index in 1.. @page.PdfPage raise @core.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..