我必须使用 java 应用程序打印 PDF 文件。我试过这样的方法:
FileInputStream psStream = new FileInputStream("<path to file>");
PrintService service = getPrinterByName("some printer name");
if (service != null) {
DocPrintJob printJob = service.createPrintJob();
Doc document = new SimpleDoc(psStream, DocFlavor.INPUT_STREAM.AUTOSENSE, null);
try {
printJob.print(document, null);
} catch (PrintException e) {
e.printStackTrace();
}
}
private PrintService[] getPrintersList() {
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
PrintService[] services = PrintServiceLookup.lookupPrintServices(flavor, null);
return services;
}
private PrintService getPrinterByName(String name) {
PrintService[] list = getPrintersList();
if (list.length > 0) {
for (PrintService service : list) {
if (service.getName().contains(name)) {
return service;
}
}
}
return null;
}
当我在假打印机上测试时(我使用 PDFCreator 作为打印机)一切正常,但是当我尝试在物理打印机上打印时,什么也没发生。
然后我使用了 PDFBox。文件打印出来了,但是单词之间有奇怪的点,在不应该出现的地方。
那么,也许有人有从 Java 应用程序打印 PDF 的经验并且可以分享这些信息?