Skip to content

Commit d67cb9f

Browse files
committed
fix: disable duplex when N-up reduces output to a single sheet
isDuplexDisabled only looked at the source page count (previewPageCount <= 1), so selecting N-up that collapses the document to one printed sheet left duplex enabled — e.g. a 4-page document with 4-up yields a single sheet but duplex still showed as selectable. Compute the effective sheet count as ceil(printed source pages / nup) and disable duplex when it drops to 1. The existing auto-correct effect already keys off isDuplexDisabled, so selecting such an N-up value also flips the selection back to single-sided, and raising nup again (2 sheets) re-enables the buttons.
1 parent 3433753 commit d67cb9f

1 file changed

Lines changed: 11 additions & 2 deletions

File tree

src/pages/Printers.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -361,9 +361,18 @@ function PrinterContent() {
361361
return pageList.length > 0 ? pageList : null;
362362
}, [pageSet, pages, previewPageCount, validatePageRange]);
363363
const selectedPageCount = selectedPages?.length ?? null;
364+
// Physical sheets after N-up imposition (ceil of the printed source pages ÷
365+
// nup). Duplex only makes sense with ≥2 sheets, so it's disabled otherwise —
366+
// e.g. a 4-page document with 4-up still yields a single sheet.
367+
const printedSourcePages = selectedPageCount ?? previewPageCount;
368+
const effectiveSheetCount =
369+
printedSourcePages == null
370+
? null
371+
: nup > 1
372+
? Math.ceil(printedSourcePages / nup)
373+
: printedSourcePages;
364374
const isDuplexDisabled =
365-
(previewPageCount !== null && previewPageCount <= 1) ||
366-
selectedPageCount === 1;
375+
effectiveSheetCount !== null && effectiveSheetCount <= 1;
367376
const isNupDisabled =
368377
(previewPageCount !== null && previewPageCount <= 1) ||
369378
(selectedPageCount !== null && selectedPageCount <= 1);

0 commit comments

Comments
 (0)