Skip to content

Apple driver (macOS) silently ignores custom page sizes, scans Letter instead #890

Description

@rqahmad

On macOS with the Apple (ImageCaptureCore) driver, any custom page size is discarded and
the scan is performed at Letter (8.5 × 11 in) instead. There is no error, no warning, and
no log entry — the scan reports success. Enumerated sizes (Letter, Legal) work correctly,
which makes the failure specific to the custom-size path.

This matters for long-paper scanners. My scanner is rated for 8.5 × 200 in, but on macOS
nothing longer than Legal is reachable, and a user asking for 36 in gets an 11 in scan with
no indication that anything was truncated.

Environment

  • NAPS2 8.3.2+70662a3160986975fb3abb3cd67a0caaa6f63290 (from NAPS2 console --help)
  • macOS 26.5.2 (build 25F84), Apple Silicon (arm64)
  • Driver: apple
  • Scanner: Ambir ImageScan Pro 830ix, USB 0x20EC:0x830A, connected directly (no hub)
  • Vendor ICA driver: /Library/Image Capture/Devices/Ambir Scanner.app v1.0.1.21 (universal binary)
  • Scanner rated by the manufacturer at 8.5 × 200 in max scan area

Steps to reproduce

Both the GUI profile path and the CLI path fail identically.

Via profile — set a profile to the Apple driver, Feeder source, 300 dpi, and a custom
page size of 8.5 × 36 in, then scan.

Via CLI:

NAPS2 console --driver apple --device "Ambir" --source feeder \
              --pagesize 8.5x36in --dpi 300 -o out.pdf -v

CLI output reports complete success:

Scanned page 1.
1 page(s) scanned.
Exporting...
Successfully saved PDF file to out.pdf

Actual vs expected

Measuring the embedded image in the resulting PDF (/Width and /Height of the image XObject):

Page size requested Image pixels @300 dpi Actual scan area
Custom 8.5 × 36 in (profile) 2550 × 3300 8.50 × 11.00 in ❌
Custom 8.5 × 36 in (--pagesize) 2550 × 3300 8.50 × 11.00 in ❌
Legal (<PageSize>Legal</PageSize>) 2550 × 4200 8.50 × 14.00 in ✅

Expected: the requested 8.5 × 36 in area is scanned; or, if the device cannot support it,
the scan is clamped to the device maximum and the user is told.

Actual: silently scanned at Letter.

Note the result is exactly Letter, not the device's declared maximum. The vendor driver's
ScannerProperties.plist declares ICAP_PHYSICALHEIGHT = 7020 (÷600 dpi = 11.7 in) for the
feeder unit, so a clamp to the device maximum would have produced 11.7 in. Getting exactly
11.00 in suggests NAPS2 is falling back to a Letter default rather than clamping — i.e. the
custom size is dropped before it reaches ImageCaptureCore.

Suggested fix

In NAPS2.Scan.Internal.Apple.AppleScanDriver, custom PageSize values appear not to be
translated into the ICScannerFunctionalUnit scan area. Even if the size cannot be honored,
surfacing a warning would prevent silent data loss — a truncated scan that reports success is
worse than a failed one, since the user only finds out when they look at the file later.


Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions