2

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)

ありがとう。

4

1 に答える 1

4

例外は、あなたから取得した最初のバイトが, , , , ,とfileInputStream等しくないことを示しています。'%''P''D''F''-''1''.'

検査しようとしているファイルが空であるInputStreamか、正しく読み取れない可能性があります...

あなたの前に多くの人が同じ問題に遭遇して修正しました:

mainPdfAsBytesファイルに保存し、そのファイルを調べて、コードをデバッグする必要があります。本当にPDFファイルですか?iText は、それが で始まらないことを示しています%PDF-1.

于 2013-08-21T06:05:14.710 に答える