【发布时间】:2018-10-15 03:21:22
【问题描述】:
我想要实现的是替换 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(new String(data))),“应用程序" 显示为 "ap)-4(plica)-3(tion",这就是我未能替换文本、任何想法或其他方法的原因能达到我想要达到的目标吗?
【问题讨论】:
-
PDF 描述了页面的图形内容。它的意思是“最终形式”。根据生成的程序文本并不总是以易于访问的方式存储。例如,您在此处看到的是字距调整信息。您对此无能为力。
-
这里关于堆栈溢出的文本替换主题已经有很多问题了。如果您搜索它们,您会在回复中看到您的问题说明了但可能存在的问题之一。
-
您尝试过使用 Apache PDFBox 吗? (我用过一次,但只用于创建 PDF)