apachepdfbox打开临时创建的pdf文件

daolsyd0  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(420)

我使用的是ApachePDFBOx2.x版本,我试图读取一个临时创建的文件。下面是我创建并读取临时文件的代码:

Path mergedTempFile = null;

        try {
            mergedTempFile = Files.createTempFile("merge_", ".pdf");
            PDDocument pdDocument = PDDocument.load(mergedTempFile.toFile());

但它给出了错误:

java.io.IOException: Error: End-of-File, expected line
    at org.apache.pdfbox.pdfparser.BaseParser.readLine(BaseParser.java:1098)
    at org.apache.pdfbox.pdfparser.COSParser.parseHeader(COSParser.java:2577)
    at org.apache.pdfbox.pdfparser.COSParser.parsePDFHeader(COSParser.java:2560)
    at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:219)
    at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1099)
    at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1082)
    at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1006)
    at com.howtodoinjava.demo.PdfboxApi.test(PdfboxApi.java:326)
    at com.howtodoinjava.demo.PdfboxApi.main(PdfboxApi.java:317)

从这个链接,我得到了一个参考,但它没有帮助无论如何:类似的问题链接
请帮帮我。不过,我还是摆脱不了这个。

t98cgbkg

t98cgbkg1#

PDDocument.load(...) 用于分析现有pdf。
传递的临时文件( mergedTempFile )是空的,因此例外。创建一个 PDDocument 使用构造函数(驻留在内存中),然后使用 PDDocument.save(...) .

Path mergedTempFile = null;
try {
    mergedTempFile = Files.createTempFile("merge_", ".pdf");
    try (PDDocument pdDocument = new PDDocument()) {

        // add content
        pdDocument.addPage(new PDPage()); // empty page as an example

        pdDocument.save(mergedTempFile.toFile());
    }

} catch (IOException e) {
    // exception handling
}

// use mergedTempFile for further logic

相关问题