【发布时间】:2022-01-12 20:23:59
【问题描述】:
我有以下方法可以合并我的 PDF 文档。但是,在文档有水印的某些情况下,该方法会引发错误。
public void doMergeUsingItext7(List<InputStream> list, OutputStream outputStream) throws SSException {
try (com.itextpdf.kernel.pdf.PdfWriter writer = new com.itextpdf.kernel.pdf.PdfWriter(outputStream);) {
writer.setSmartMode(Boolean.TRUE);
try (com.itextpdf.kernel.pdf.PdfDocument pdfDoc = new com.itextpdf.kernel.pdf.PdfDocument(writer)) {
pdfDoc.initializeOutlines();
list.forEach((in) -> {
try (com.itextpdf.kernel.pdf.PdfReader reader = new com.itextpdf.kernel.pdf.PdfReader(in);) {
reader.setUnethicalReading(Boolean.TRUE);
try (com.itextpdf.kernel.pdf.PdfDocument addedDoc = new com.itextpdf.kernel.pdf.PdfDocument(reader)) { //ERROR IS THROWN ON THIS LINE
addedDoc.copyPagesTo(1, addedDoc.getNumberOfPages(), pdfDoc);
logger.log(Level.INFO, "Successfully Added the Document to PDF");
} catch (Exception e) {
ExceptionUtils.printRootCauseStackTrace(e);
}
} catch (IOException ex) {
ExceptionUtils.printRootCauseStackTrace(ex);
} catch (Exception e) {
ExceptionUtils.printRootCauseStackTrace(e);
}
});
}
} catch (Exception ex) {
throw new SSException(ex, "Print Version Failed");
}
}
文档有水印时会抛出以下错误...
com.itextpdf.kernel.PdfException: Illegal length value.
at com.itextpdf.kernel.pdf.PdfEncryption.readAndSetCryptoModeForStdHandler(PdfEncryption.java:523)
at com.itextpdf.kernel.pdf.PdfEncryption.<init>(PdfEncryption.java:229)
at com.itextpdf.kernel.pdf.PdfReader.readDecryptObj(PdfReader.java:1251)
at com.itextpdf.kernel.pdf.PdfReader.readPdf(PdfReader.java:685)
at com.itextpdf.kernel.pdf.PdfDocument.open(PdfDocument.java:1871)
at com.itextpdf.kernel.pdf.PdfDocument.<init>(PdfDocument.java:252)
at com.itextpdf.kernel.pdf.PdfDocument.<init>(PdfDocument.java:234)
at gov.ca.lc.util.PdfUtilFuntions.lambda$doMergeUsingItext7$0(PdfUtilFuntions.java:180)
at java.util.ArrayList.forEach(ArrayList.java:1257)
at gov.ca.lc.util.PdfUtilFuntions.doMergeUsingItext7(PdfUtilFuntions.java:176)
我不确定文档中究竟是什么未能合并。非常感谢任何有关解决此问题的帮助。谢谢。
【问题讨论】:
-
乍一看,这看起来像是 PDF 的问题。可以在这里分享一下吗?
-
@mkl 感谢您的回复!请在以下链接中找到文档...dropbox.com/s/w7rti30jvm4pjzc/RN%202104812.pdf?dl=0