我試圖使用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