如何在PDF中插入不可见文本?

3

1
@AndrewMorton “这个回答解决了你的问题吗?” - 这是非常不可能的。毕竟,这里的问题是关于普通文本,仅仅是应该不可见,而不是元数据。此外,这个问题已经快9年了,并且已经有一个被接受的答案关闭了。很有可能,提问者现在已经不再处理这个问题了... - mkl
@mkl 当时,提问者可能不知道 PDF 文档可以添加元数据,而这些元数据将会被 Alfresco 索引。现在这个问题会被视为离题,因为它在寻求一个库,但我认为重复的答案更有用。 - Andrew Morton
这仍然是一个有用的问题,但现在推荐已经有了自己的网站,所以我只是在那里发布了同样的问题:https://softwarerecs.stackexchange.com/questions/71464/java-library-to-insert-invisible-text-into-a-pdf - Nicolas Raoul
@AndrewMorton 不是的。将其关闭为重复项是不正确的。OCR文本的数量使得将其放在PDF元数据中完全不合适。 - mkl
3个回答

4

有三个选项。我的答案是针对itext的,但您应该能够将基本方法翻译到任何足够先进的PDF库中。

  1. 文本呈现模式3:“无描边,无填充”。使用iText:myPdfContentByte.setTextRenderMode(PdfContentByte.TEXT_RENDER_MODE_INVISIBLE);
  2. 在某物后面绘制文本。您可能正在使用扫描的页面图像。iText myPdfStamper.getUnderContent(pageNum) 可以轻松实现此目标,并允许您在扫描下方绘制文本。其他让您访问页面内容的库可能需要您在现有内容流的开头“原始”添加文本。您需要查看“PDF规范”(谷歌一下,您会没问题)以获取详细信息。第9章涉及文本呈现的所有内容。
  3. 在页面的媒体或裁剪框之外绘制文本。如果您只想让一些随机的PDF搜索引擎找到您的页面,那么这将起作用,但如果您希望查看PDF的人看到适当的文本选择框,则不太适合。

1

这个展示了如何创建包含文本的PDF文档,这个则展示了如何添加图像。先添加文本,然后在其上面添加图像 - 文本将对最终用户“不可见”,但仍可被搜索引擎搜索。 这个也可能会有所帮助。


我不想添加图片。正如我所说,我正在修改一个现有的PDF文件。 - Nicolas Raoul
好的,我有点假设扫描的页面是图像。在这种情况下,这个链接可能会有所帮助 - 你可以创建一个新的PDF文件,并将文本覆盖在原始PDF文件之上。 - nikhil500

0

您不必将文本渲染为不可见状态。只需在适当的位置上渲染它们,然后将扫描图像覆盖在文本上方。或者,您可以在图像上方渲染文本,并将笔画和刷子的颜色的 alpha 值设置为零。


当然可以,只要文本对最终用户不可见,任何方式都可以(这就是我所说的“不可见”)。您会使用哪个库的哪些API方法来实现呢? - Nicolas Raoul
如果您已经使用其他组件拥有了OCR文本和扫描图像,那么大多数PDF库都能够在页面上呈现扫描图像,然后在其上呈现单独的文本输出。您应该在页面上呈现文本,而不是在图像上,只需将文本元素叠加在PDF页面中的图像元素上即可。我在一家制作商业PDF组件的公司工作(www.gnostice.com),但我猜想您应该能够使用PDFBox或iText。 - BZ1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接