从 Java 中静默打印 PDF

2022-09-04 21:01:33

我们正在研究从Java内部静默打印PDF文档。打印将从桌面调用,而不是通过浏览器调用,因此我们不能使用JavaScript。PDF 渲染器是一种操作解决方案,但其渲染质量不可接受。iText似乎不能与Java打印服务一起插入。有一些商业Java库,Qoppa,JPedal和ICEpdf的jPDFPrint,我们还没有尝试过。

有没有人从Java进行PDF静默打印的经验?


答案 1

Apache PDFBox.它目前处于孵化阶段,但在此之前,PDF打印功能已经存在。在内部,它使用 Java 打印服务创建打印作业,并且还支持静默打印

请注意,它也需要 Fontbox,并且当前(即将发布的 0.8.0 版本)已包含对 Type 0 字体文档的正常回退。类型1字体打印正确;但是,在 0.7.3 中,尝试使用 Type 0 字体打印文档将导致引发异常。


答案 2

也许我误解了,但为什么不直接使用打印服务 API 呢?以下内容适用于我(假设您将PDF文档作为字节数组):

DocFlavor flavor = DocFlavor.BYTE_ARRAY.PDF;
PrintService[] services = PrintServiceLookup.lookupPrintServices(flavor, null);
if (services.length > 0)
{
    DocPrintJob printJob = services[0].createPrintJob();
    Doc document = new SimpleDoc(pdfBytes, flavor, null)
    printJob.print(document, null);
}
else
{
    System.out.println("No PDF printer available.");
}

推荐