在Windows 8.1上使用Java JDK 1.8.0_45,我试图使用JavaFx 8获得高质量的文本打印,但无法获得与使用带有PDF文件的免费Adobe Reader获得的打印质量相同的打印质量。 Adobe质量看起来与ControlPanel>设备和打印机> Epson Nx230>打印测试页的测试打印相同,两者质量都很好。
使用JavaFx Canvas的打印质量是合理的质量但模糊。它当然不适合公司报告。
我用来创建JavaFx打印输出的代码基本如下,尽管我尝试了一些没有提高质量的变体:
Canvas canvas = new Canvas(pageWidth, pageHeight);
GraphicsContext gc = canvas.getGraphicsContext2D();
gc.setFont(Font.font("Arial", FontWeight.BOLD, 12));
gc.setFill(Color.BLACK);
gc.fillText(pHed + pageNr, 20, 20); // Page Heading
PrinterJob printerJob = PrinterJob.createPrinterJob();
printerJob.printPage(canvas);
默认打印机与Adobe Reader使用的打印机相同。 JavaFx产生的打印质量很模糊。 Adobe PDF Reader产生的可比打印质量远远优于使用Epson驱动程序的测试打印质量与Adobe相同。使用其他字体(包括默认字体)似乎没什么区别。
有没有办法在JavaFx中实现更高质量的打印?