我在这里找到了一个很好的答案,用JavaFX打印非节点对象:
JavaFX printing non node objects
我将报告代码(我使用了这个代码):
PrinterJob job = PrinterJob.createPrinterJob();
PDFFile pdfFile = ... ;
if (job != null) {
boolean success = true ;
for (int pageNumber = 1; pageNumber <= pdfFile.getNumPages() ; pageNumber++) {
PDFPage page = pdfFile.getPage(pageNumber, true);
Rectangle2D bounds = page.getBBox();
int width = (int) bounds.getWidth();
int height = (int) bounds.getHeight();
java.awt.Image img = page.getImage(width, height, bounds, null, true, true);
BufferedImage bImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
bImg.createGraphics().drawImage(img, 0, 0, null);
javafx.scene.image.Image fxImg = SwingFXUtils.toFXImage(bImg, null);
ImageView imageView = new ImageView(fxImg);
success = success & job.printPage(imageView);
}
if (success) {
job.endJob();
}
}
我现在的问题是图像质量。前提是我不需要最好的图像质量,但我们需要的只是一个可读的&#34;内容。 我试图加倍java.awt.Image的宽度和高度,然后重新调整bufferedImage,但没有任何反应。
有可能改善&#34;只是一点点&#34;打印的图像? 我找到了ghost4j,但我不想因为这个原因让项目太重。
提前致谢