我正在尝试使用Java 1.5使用iText 1.02b向已创建的PDF添加页面。当我将新页面添加到现有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)
感谢。
答案 0 :(得分:4)
例外情况告诉您,从fileInputStream
获得的第一个字节不等于'%'
,'P'
,'D'
,'F'
,{{ 1}},'-'
,'1'
。
也许您要检查的文件是空的,可能无法正确读取'.'
,...
许多人遇到并修复了同样的问题:
您应该通过将InputStream
保存到文件并检查该文件来调试代码。它真的是一个PDF文件吗? iText告诉您它不是以mainPdfAsBytes
开头的。