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();
我檢查了PDF文件,this工具,這些都是錯誤的,我得到:
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.
編輯:
上面的代碼是正確的,我稍後在代碼中犯了一個錯誤當將PDF傳回主應用程序時,錯誤地作出了這樣的假設,因爲我已經多次成功傳輸了pdf,並且認爲我不會在那裏犯錯。我的錯。
爲了完整,inputPDF和outputPDF是ByteArrayInputStream和ByteArrayInputStream。
它看起來不錯,但你不顯示你如何保存文檔和什麼。例如,如果網絡保存不當,保存到網絡很容易失敗。請張貼破碎的PDF。 –
...並請解釋「inputPDF」和「outputPDF」是什麼。 – mkl
感謝Paulo,你的提示讓我在正確的軌道上。上面的代碼是正確的,並做它應該做的事情。將xmlencoded帶水印的pdf返回主應用程序就是發生錯誤的地方,我忽略了我在那裏犯的一個錯誤。 – Rubikan