【发布时间】:2019-01-11 05:08:40
【问题描述】:
我使用以下 Java 代码打印 PDF 文档:
PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintService(printer);
File file = new File(fileName);
PDDocument doc = PDDocument.load(file);
PDFPageable pageable = new PDFPageable(doc);
job.setPageable(pageable);
System.out.println("-- before printing --");
job.print();
System.out.println("-- after printing --");
doc.close();
控制台的输出是:
-- before printing --
Aug 03, 2018 12:05:09 PM org.apache.pdfbox.cos.COSDocument finalize
WARNUNG: Warning: You did not close a PDF Document
-- after printing --
为什么我会收到此警告?
【问题讨论】:
-
你用的是什么版本?我很惊讶,因为您确实关闭了文档,并且文档对象没有“丢失”。会不会是来自其他代码的另一个文档对象?例如。因为你在其他地方调用了“new PDDocument()”?
-
我使用的是 PDFBox 2.0.11 版。如果我删除
job.print();,消息就会消失。所以我认为该警告与另一个 PDDocument 无关。无论如何,我会检查其余的代码。 -
另一个想法 - 你在使用什么 jdk / 它是那个数字 (6, 7, 8, 9) 的最新 jdk?
-
我刚刚从 JDK 1.8.0_131 更新到 1.8.0_181 并且警告消失了。非常感谢您的提示。