我想要實(shí)現(xiàn)的是替換pdf文件中的文本。我有以下代碼:PdfReader reader = new PdfReader("test.pdf");PdfDictionary dict = reader.getPageN(1);PdfObject object = dict.getDirectObject(PdfName.CONTENTS);if (object instanceof PRStream){ PRStream stream = (PRStream) object; byte[] data = PdfReader.getStreamBytes(stream); System.out.println(new String(data)); stream.setData(new String(data).replace("application", "HELLO WORLD").getBytes());}PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("test-output.pdf"));stamper.close();reader.close();當(dāng)我試圖打印出來查看數(shù)據(jù) (System.out.println(new String(data))) 時(shí),“ application ”顯示為“ ap)-4(plica)-3(tion ”,這就是為什么我未能替換文本,任何想法或其他方法可以實(shí)現(xiàn)我想要實(shí)現(xiàn)的目標(biāo)?
1 回答

慕斯709654
TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊
您將無法使用 iText 執(zhí)行此操作。
相信我,這是有關(guān) PDF 的最令人沮喪的發(fā)現(xiàn)之一:您可以使用 iText 構(gòu)建它們,但您不能稍后返回并用其他內(nèi)容替換文本,就像您在示例中所做的那樣。
你真的無能為力。一旦文本存在,您就無法修改它。
盡管如此,您通??梢韵颥F(xiàn)有 PDF添加新內(nèi)容(文本、圖像等)。所以......如果你可以稍微改變宇宙并創(chuàng)建一個(gè)具有正確大小的空白空間的PDF,你可以稍后返回并使用PdfStamper
該類在另一層圖形內(nèi)容上“標(biāo)記”。
添加回答
舉報(bào)
0/150
提交
取消