///|
let pdf_impose_cpdf_stamp_name : @core.PdfName = pdf_page_name("/CPDFSTAMP")
///|
fn pdf_impose_border_ops(
x : Double,
y : Double,
width : Double,
height : Double,
line_width : Double,
) -> Array[@content.PdfContentOp] {
[
@content.pdf_content_begin_artifact(),
Op_q,
Op_BMC(pdf_impose_cpdf_stamp_name),
Op_rg(0.0, 0.0, 0.0),
Op_RG(0.0, 0.0, 0.0),
Op_w(line_width),
Op_re(x, y, width, height),
Op_s,
Op_EMC,
Op_Q,
@content.pdf_content_end_artifact(),
]
}
///|
#warnings("-unused_value")
fn PdfDocument::pdf_impose_add_border(
self : PdfDocument,
line_width : Double,
fast : Bool,
) -> PdfDocument raise @core.PdfError {
let end_page = self.endpage()
if line_width == 0.0 || end_page == 0 {
self
} else {
let pages = self.pages_of_pagetree()
let first_bounds = self.parse_rectangle(pages[0].mediabox)
let inset = line_width / 2.0
self.append_page_content_ops(
pdf_impose_all_pages(end_page),
pdf_impose_border_ops(
first_bounds.min_x + inset,
first_bounds.min_y + inset,
first_bounds.max_x - line_width,
first_bounds.max_y - line_width,
line_width,
),
fast~,
)
}
}