gpt4 book ai didi

Java PrinterJob,高质量打印最终达到 72 DPI

转载 作者:行者123 更新时间:2023-12-01 19:02:01 26 4
gpt4 key购买 nike

我正在尝试以 300 dpi 打印质量在 1 英寸 x 2 英寸标签上打印图像

public void print() {
RepaintManager currentManager = RepaintManager.currentManager(this);
currentManager.setDoubleBufferingEnabled(false);

PrinterJob job = PrinterJob.getPrinterJob();

try {
HashPrintRequestAttributeSet set = new HashPrintRequestAttributeSet();
set.add(PrintQuality.HIGH);
set.add(MediaSize.findMedia(2.125f, 1f, MediaSize.INCH));
// 2" x 1" PrintableArea
set.add(new MediaPrintableArea(1f/16f, 0f, 2.0f, 1f, MediaPrintableArea.INCH));
set.add(new PrinterResolution(300, 300, ResolutionSyntax.DPI));
set.add(OrientationRequested.PORTRAIT);
job.setPrintable(this);
job.setJobName("Label");
job.print(set);
} catch (PrinterException e) {
// The job did not complete successfully
e.printStackTrace();
}
currentManager.setDoubleBufferingEnabled(true);
}

我的 BufferedImage 尺寸为 300 x 600 像素,应该适合

BufferedImage bi = freeze(this); //getting BufferedImage from JPanel
System.out.println("Image dim: "+bi.getWidth()+" X "+bi.getHeight());

控制台输出:图像暗淡:600 X 300。

但有问题的部分是当我打印出可成像尺寸时

        double x=pf.getImageableX();
double y=pf.getImageableY();
int w = (int)Math.round(pf.getImageableWidth());
int h = (int)Math.round(pf.getImageableHeight());
System.out.println("X: "+x);
System.out.println("Y: "+y);
System.out.println("W: "+w);
System.out.println("H: "+h);

输出是:

X: 4.50141716003418
Y: 0.0
W: 144
H: 72

来自 h & w:这里每英寸留下 72 像素,任何调整大小都没有效果,这没有意义,

300 DPI 的 HashPrintRequestAttributeSet 请求有什么用处?

最佳答案

API docs of PageFormat#getImageableHeight()明确表示:

Return the height, in 1/72nds of an inch, of the imageable area of the page. This method takes into account the orientation of the page.

(getImageableWidth() 的 API 文档类似。)

当您将可打印区域指定为 2x1 英寸(请参阅代码中的 MediaPrintableArea 属性)时,可成像的宽度和高度分别为 144。 72(1/72 英寸)。

方法文档中没有关于 DPI 的任何单词。

关于Java PrinterJob,高质量打印最终达到 72 DPI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59622698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com