有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何使用java替换pdf中的文本

我试图实现的是替换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(新字符串(数据))时,“应用程序”显示为“ap)-4(plica)-3(tion”,这就是我未能替换文本的原因,是否有任何想法或其他方法可以实现我试图实现的目标


共 (1) 个答案

  1. # 1 楼答案

    您将无法使用iText执行此操作

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

    对此你真的无能为力。一旦文本存在,您就不能修改它


    尽管如此,您通常可以向现有PDF添加新内容(文本、图像等)。所以如果您可以稍微改变宇宙并创建一个具有正确大小的空空间的PDF,那么您可以稍后返回并使用PdfStamper类在另一层图形内容上“盖章”

    有关这方面的更多信息,请参见iText documentation,以及这一问题:

    How to add Content to a PDF using iText PdfStamper