mirror of
https://github.com/storytold/lightcraft.git
synced 2026-10-28 03:57:57 -06:00
print.exportPdf now converts each composed page to the job's colour target and writes it into a print-ready PDF: - PrintJob gains `color` (PrintColorSettings): Managed by Printer (sRGB / Adobe RGB, profile embedded, no output intent) or a printer / paper .icc / .icm converted here and named as the document's output intent; perceptual or relative colorimetric with black point compensation; Print Adjustment brightness / contrast; print sharpening Low / Standard / High for Matte or Glossy; 16 or 8 bits per component. print.set / print.get and print templates carry it; out-of-range values are refused when set. - Each photo is sharpened for the paper right after it renders at its print size. - print/output.rs converts and Flate-compresses one page at a time (memory holds one page's device samples) into ICC-tagged images through engine::pdf; the PDF is 1.6. The 256 MiB cap counts the compressed pages. - A printer profile that can't be used (missing, too large, not a profile) fails the print before anything renders, naming the file. - contact_sheet's PDF writer goes back to private: only the contact sheet uses it. Tests: a printer profile reaches the PDF as ICCBased images plus an output intent, a junk profile fails naming the file, colour settings validate with the job, sharpening and media round-trip through print.set / print.get, a missing profile fails before rendering with no activity row; the existing print and CLI tests follow the PDF 1.6 output. Docs: LRC-PRINT-JOB and gap 15.