Add 8-up support to ipptransform - #160
Conversation
|
I'm really not sure how I feel about adding this at a time when things like N-up are barely used... Will consider it but certainly not before libcups 3.1. |
|
Thanks for taking a look. Keeping this as a draft/Future until libcups 3.1 makes sense. One bit of context: N-up printing is still used fairly often in university settings, especially for lecture slides and handouts, so 8-up addresses a real workflow there. I’ll be happy to rebase or adjust the implementation when 3.1 work starts. |
|
I agree that slides are sometimes still printed (depending on the age of the presenter), but LibreOffice already does its own N-up generation for slides - it doesn't use the CUPS number-up option to do it... |
|
That is true when printing the source presentation directly from LibreOffice; its application-side imposition covers that path. The workflow I meant is usually already-generated PDF material—slides, handouts, papers, or other documents—printed from a PDF viewer or via More generally, 8-up is the missing exact rotated layout for ISO A-series paper: a 2-by-4 grid preserves the page aspect ratio exactly, apart from margins. I understand the libcups 3.1 timing and am happy to leave this as a draft until then. |
Summary
number-up=8inipptransformnumber-upvalueMotivation
This is the
libcupscompanion to OpenPrinting/cups#1672. Eight-up printing is particularly useful with ISO A-series paper, where the page aspect ratio makes this imposition geometrically natural. The currentlibcupsfiltersPDF transform already supports an explicit 8-up layout.The new end-to-end test uses
ippeveprinter, submits the existing eight-page PDF fixture withnumber-up=8, verifies that the job retains the attribute and completes successfully, and checks thatipptransformplaces all eight input pages on one output page. No physical printer is required.Testing
./configure --enable-debugmakemake -C tools test— existing suite: 202 tests, 79 passed, 0 failed, 123 skipped; new 8-up suite: 3 passed, 0 failedcase 8temporarily removed: the regression test fails on the former 1-up fallback as expectedRelated UI changes:
Assisted-by: OpenAI Codex:GPT-5 [Codex]