【问题标题】:How to insert invisible text into a PDF?如何在 PDF 中插入不可见的文本?
【发布时间】:2011-07-05 12:41:06
【问题描述】:

更新:请参阅https://softwarerecs.stackexchange.com/questions/71464/java-library-to-insert-invisible-text-into-a-pdf

我想在现有 PDF 文件中插入不可见文本,使其可搜索。

我应该使用什么库
我希望能提供指向特定 API 方法的链接。

免费,最好是开源的。
非常感谢!

(对于好奇的:我想在 Alfresco 存储库中自动 OCR 传入扫描的论文并使其可搜索)

【问题讨论】:

  • @AndrewMorton “这能回答你的问题吗?” - 这不太可能。毕竟这里的问题是关于常规文本,它应该是不可见的,而不是元数据。此外,这个问题已有近 9 年的历史,并以一个公认的答案结束。机会是操作同时不再处理该问题......
  • @mkl OP 可能不知道当时可以将元数据添加到 PDF 文档中,并且它将是 indexed by Alfresco。这个问题现在被认为是题外话,因为它要求一个图书馆,但我认为副本会更有用。
  • 仍然是一个有用的问题,但现在建议有自己的网站,所以我只是在那里发布了同样的问题:softwarerecs.stackexchange.com/questions/71464/…
  • @AndrewMorton 没有。这种作为重复的关闭是不正确的。 OCR 文本的数量使得 pdf 元数据的放置位置完全错误。

标签: pdf itext pdfbox


【解决方案1】:

3 个选项。我的答案是特定于 itext 的,但您应该能够将底层方法转换为任何足够先进的 PDF 库。

  1. 文本渲染模式 3:“无描边,无填充”。使用 iText:myPdfContentByte.setTextRenderMode(PdfContentByte.TEXT_RENDER_MODE_INVISIBLE);
  2. 在某物后面画出文字。您可能正在使用扫描的页面图像。 iText myPdfStamper.getUnderContent(pageNum) 让这一切变得简单,并让您在扫描下绘制文本。允许您访问页面内容的其他库可能要求您在现有内容流的开头添加“原始”文本。您需要查看“PDF Spec”(谷歌,你会没事的)了解详细信息。第 9 章是关于文本渲染的。
  3. 在页面的媒体或裁剪框之外绘制文本。如果您只是想让一些熟悉 PDF 的随机搜索引擎打开您的页面,这将起作用,但如果您希望查看 PDF 的人看到适当的文本选择框……就不用这么多了。

【讨论】:

    【解决方案2】:

    This 显示如何创建包含文本的 PDF 文档,this 显示如何添加图像。首先添加文本,然后在其顶部添加图像 - 文本将对最终用户变得“不可见”,但仍可被搜索引擎搜索。 This 也可能有用。

    【讨论】:

    • 我不想添加图片。正如我所说,我正在修改一个现有的 PDF 文件。
    • 好吧,我不知何故假设扫描的页面是图像。在这种情况下,this 可能会有所帮助 - 您可以使用文本创建一个新的 PDF 并将原始 PDF 覆盖在其上。
    【解决方案3】:

    您不必使文本不可见。只需将它们呈现在适当的位置,但将扫描的图像覆盖在文本上。或者,您可以在图像上渲染文本并将笔触和画笔颜色的 alpha 值设置为零。

    【讨论】:

    • 当然,只要文本对最终用户不可见,一切都很好(这就是我所说的“不可见”)。您将为此使用哪个库的哪些 API 方法?
    • 如果您已经拥有 OCR 文本和使用其他组件的扫描图像,那么大多数 PDF 库将能够在页面上呈现扫描图像,然后在其上呈现单独的文本。您应该在页面上呈现文本,而不是在图像上,只需将文本元素覆盖在 PDF 页面中的图像元素上。我在一家生产商业 PDF 组件的公司 (www.gnostice.com) 工作,但我猜你应该能够使用 PDFBox 或 iText。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-30
    • 1970-01-01
    • 2018-01-22
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多