【问题标题】:Apache PDFBox to open temporary created PDF fileApache PDFBox 打开临时创建的 PDF 文件
【发布时间】:2020-12-31 07:33:45
【问题描述】:

我正在使用 apache pdfbox 2.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)

从这个链接我得到了一个参考,但它无论如何都没有帮助: Similar Issue Link

请帮我解决这个问题。尽管如此,我还是无法摆脱它。

【问题讨论】:

    标签: java pdfbox


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 2016-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      相关资源
      最近更新 更多