我试图使用Java 1.5将iText 1.02b添加到已创建的PDF中。当我将新页面添加到现有的PDF中时,我收到了包含的异常。以下是我们遇到问题的方法中的代码。将页面添加到现有的PDF文件com.itextpdf.text.exceptions.InvalidPdfException:找不到PDF头标记
public static File addSignaturePageToPDF(String fileName, InputStream fileInputStream, SignatureTemplateInfo signaturePageInfo, HttpServletRequest argRequest) throws Exception {
int splitIdx = fileName.lastIndexOf(".");
File signedFile = File.createTempFile(fileName.substring(0,splitIdx), fileName.substring(splitIdx));
SignatureModel signatureModel = SignatureHelper.getSignatureModel(signaturePageInfo.getCaseHeaders(), signaturePageInfo.getEventSubTp(), signaturePageInfo.getSignatureId(), argRequest);
byte[] signaturePdfAsBytes = SignatureHelper.createSignature(signatureModel, argRequest);
byte[] mainPdfAsBytes = getByteArrayFromInputStream(fileInputStream);
PdfReader mainPdfReader = new PdfReader(mainPdfAsBytes); << Exception here
PdfReader signaturePdfReader = new PdfReader(signaturePdfAsBytes);
例外:
com.itextpdf.text.exceptions.InvalidPdfException: PDF header signature not found.
at com.itextpdf.text.pdf.PRTokeniser.checkPdfHeader(PRTokeniser.java:205)
at com.itextpdf.text.pdf.PdfReader.readPdf(PdfReader.java:496)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:189)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:178)
at icis.common.util.ConvertDocument.addSignaturePageToPDF(ConvertDocument.java:96)
at icis.cr.common.file.ViewFileAction.executeProcess(ViewFileAction.java:71)
at icis.common.action.BaseICISAction.execute(BaseICISAction.java:134)
at icis.cr.common.BaseCRAction.execute(BaseCRAction.java:41)
感谢。
考虑将signaturePdfAsBytes和mainPdfAsBytes的内容存储到一些修剪的文件中并检查它们。 – mkl
哇 - 通常我不是指出你正在使用强大的旧版本iText的人 - 但对我来说,将近10年对我来说已经太旧了;-) 1.你有没有考虑使用更新的版本?也许这个问题很久以前就解决了。 2.要检测是否有问题,请在异常之前插入以下行:System.out.println(new String(mainPdfAsBytes));并检查它是否以“PDF-1”开头。 – Lonzak