2016-07-27 4 views
1

バイト配列として提供されている既存のpdfファイルにウォーターマークを追加する必要があります。 thisの例をガイドラインとして使用しましたが、私が作成したpdfファイルの終わりのマーカーと 'startxref'というキーワードがないようです。Java iText:ウォーターマークを追加した後のEOFマーカーなし

私が正しいことをしなかったことはありますか?または何かが行方不明ですか?

PdfReader reader = new PdfReader(inputPDF); 
    PdfStamper stamper; 
    stamper = new PdfStamper(reader, outputPDF); 
    PdfContentByte under = stamper.getUnderContent(1); 
    Font f = new Font(FontFamily.HELVETICA, 15); 
    Phrase p = new Phrase(watermarkText, f); 
    ColumnText.showTextAligned(under, Element.ALIGN_CENTER, p, 297, 550, 0); 
    stamper.close(); 
    reader.close(); 

私はthisツールでPDFファイルをチェックし、これらは私が取得エラーです:

Open file. 
    0x80410108 - E - The end-of-file marker was not found. 
     - File: Formular_TEST_Watermark_V1_0.pdf 
    0x8041010A - E - The 'startxref' keyword or the xref position was not found. 
     - File: Formular_TEST_Watermark_V1_0.pdf 
    0x80410108 - E - The end-of-file marker was not found. 
     - File: Formular_TEST_Watermark_V1_0.pdf 
    Close file. 

はEDIT:

上記のコードが正しい、私は、後のコードでミスを犯しましたpdfを主なアプリケーションに戻すときに誤って透かしを入れたときに間違いを犯したに違いありません。すでにpdfsを複数回転送していて、間違いがないと思いました。私の悪い。

完全性のために、inputPDFとoutputPDFはByteArrayInputStreamとByteArrayInputStreamです。

+1

正しく見えますが、ドキュメントの保存方法や内容は表示されません。ウェブに保存することは、例えば正しく行われなければ失敗することは容易であることが知られている。壊れたPDFを投稿してください。 –

+0

... 'inputPDF'と' outputPDF'が何であるかを説明してください。 – mkl

+0

Pauloさん、ありがとうございました。上のコードは正しいものであり、それがするはずのことです。 xmlencoded透かしを入れたpdfをメインアプリケーションに戻すのは、エラーが発生した場所です。私はそこに間違いを見落としました。 – Rubikan

答えて

0

パウロ・ソアレスのヒントのおかげで、私は真の犯人を見つけました。問題のウォーターマーキング自体のコードは正しいものであり、それがするはずのことをします。私はそれに応じて質問を更新しました。

関連する問題