如何使用Java替换PDF中的文本

时间:2018-10-15 03:21:23

标签: java pdf replace itext

我想要实现的是替换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();

当我尝试打印以查看数据(System.out.println(新的String(数据))),“ 应用程序 >”显示为“ ap)-4(plica)-3(tion ”),这就是我无法替换文本,任何想法或其他方法的原因可以实现我试图实现的目标?

1 个答案:

答案 0 :(得分:1)

您将无法使用iText进行此操作。

相信我,这是关于PDF的最令人沮丧的发现之一:您可以使用iText来构建它们,但是您不能像在示例中那样回过头再用其他内容替换文本。

实际上您无能为力。一旦文本存在,就无法对其进行修改。


尽管如此,您通常可以 ADD 将新内容(文本,图像等)添加到现有的PDF中。因此,...如果您可以稍微改变Universe并创建正确大小的空白PDF,则可以稍后再使用PdfStamper类在另一层图形内容上“加盖”。

有关此问题的更多信息,请参见iText documentation和这个很好的问题:

How to add Content to a PDF using iText PdfStamper