1

我正在使用 apache pdfbox 2.0.21。

当我尝试执行下面的代码时,它会抛出类似数字格式异常的错误。

Exception in thread "main" java.lang.NumberFormatException: For input string: "1#1"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.parseInt(Integer.java:615)
    at org.apache.pdfbox.multipdf.PDFMergerUtility.acroFormLegacyMode(PDFMergerUtility.java:1367)
    at org.apache.pdfbox.multipdf.PDFMergerUtility.mergeAcroForm(PDFMergerUtility.java:1176)
    at org.apache.pdfbox.multipdf.PDFMergerUtility.appendDocument(PDFMergerUtility.java:575)
    at org.apache.pdfbox.multipdf.PDFMergerUtility.legacyMergeDocuments(PDFMergerUtility.java:459)
    at org.apache.pdfbox.multipdf.PDFMergerUtility.mergeDocuments(PDFMergerUtility.java:346)
    at org.apache.pdfbox.multipdf.PDFMergerUtility.mergeDocuments(PDFMergerUtility.java:330)

代码:

      try {
            PDFMergerUtility merger = new PDFMergerUtility();
            Path mergedTempFile = Files.createTempFile("merge_", ".pdf");

            merger.setDestinationFileName(mergedTempFile.toString());

            System.err.println(mergedTempFile.toFile());

            String[] fileArray = { 
                    "D://test//34026-15BN-011-34B.pdf",
                    "D://test//34026-15BN-011-34B comment.pdf"
            };

            List<File> files = new ArrayList<>();
            for (String name : fileArray) {
                files.add(new File(name));
            }

            for (File file : files) {
                merger.addSource(file);
            }

            merger.mergeDocuments(null);   //On this line it throws error

            System.out.println("Merging Completed...");
        } catch (IOException e) {
            e.printStackTrace();
        }

发布了另一个相关问题,但没有帮助。 PDFBOX:java.lang.NumberFormatException:

请帮助我。

4

1 回答 1

1

这是在PDFBOX-5257中跟踪的错误(因为“dummyFieldName”在合并时用作重复字段的前缀,并且后缀应为数字),并将在未来 3 个月内的 2.0.25 版本中修复. 在此之前,获取包含错误修复的快照。

或者,重命名字段,使其不包含“dummyFieldName”,方法是使用setPartialName().

于 2021-08-11T17:28:45.177 回答