RFR: 8251928: [macos] the printer DPI always be 72, cause some content lost when print out
GennadiyKrivoshein
duke at openjdk.org
Wed May 28 10:34:41 UTC 2025
The fix for the https://bugs.openjdk.org/browse/JDK-8251928.
**Description**.
This PR contains changes to be able to print with DPI higher than 72 on macOS, set default CPrinterJob DPI is 300 like in the PSPrinterJob.
As described in the macOS drawing guide, the following steps are required to draw with high DPI (https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CocoaDrawingGuide/Transforms/Transforms.html#//apple_ref/doc/uid/TP40003290-CH204-BCICIJAJ):
1. Convert the user-space point, size, or rectangle value to device space coordinates;
2. Normalize the value in device space so that it is aligned to the appropriate pixel boundary;
3. Convert the normalized value back to user space;
4. Draw your content using the adjusted value.
The 1-st step is now implemented in the CPrinterJob, a Graphics provided to the print method adjusted to a printer's DPI.
The 2-nd step is a drawing process in the java code (without changes).
The 3-rd step is now implemented in the PrinterView.m, the drawing scaled back to the 72 DPI.
The 4-th step is a drawing process in the native code (without changes).
**Tests**.
I run all tests from javax.print package and there is no any regression.
New test covers macOS and Linux only because we know its default DPI - 300.
-------------
Commit messages:
- [macos] the printer DPI always be 72
Changes: https://git.openjdk.org/jdk/pull/25489/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=25489&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8251928
Stats: 311 lines in 5 files changed: 284 ins; 8 del; 19 mod
Patch: https://git.openjdk.org/jdk/pull/25489.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/25489/head:pull/25489
PR: https://git.openjdk.org/jdk/pull/25489
More information about the client-libs-dev
mailing list