要解决这个任务,你需要做 3 件事:
- 一个很好的文本提取工具,可以从 PDF 中获取内容(你基本上是在要求这个)。
- 了解您想使用哪些关键字来创建适当的文本注释/cmets 并触发 PDF 自动注释(您说您有这个)。
- 一种将 cmets 插入 PDF 的方法,最好是在正确的页面上,甚至是在页面上完全正确的位置(您要求这样做)。
文本提取
PDFlib 的 TET(文本提取工具包)可让您从任何 PDF 中提取文本。它是最强大的可用 PDF 文本提取工具,可让您通过命令行和脚本进行访问。它可以处理诸如连字以及不同的文本编码这样的怪事(来自文本提取的 p.o.v.)。更重要的是,它可以告诉您提取的任何字符或文本字符串在 PDF 页面上的确切页码和坐标。
插入 PDF 注释
在您解析文本并且您的逻辑决定为哪个页面添加哪个注释后,您可以使用 PDFlib 或 Ghostscript 将 cmets(“注释”)添加到原始 PDF。
我不会在此处提供有关如何使用 PDFlib 向现有 PDF 添加注释的教程。但我会泄露一些关于 Ghostscript 如何做到这一点的内幕消息:
使用 Ghostscript 为 PDF 添加注释
要使用 Ghostscript 向现有 PDF 添加注释,首先创建一个名为 my-pdfmarks.txt(或您喜欢的任何名称)的文本文件。现在使用以下语法在该文本文件中输入注释的内容:
[ /Title (Annotation experiments by -pipitas-)
/Author (pipitas)
/Subject (I'm trying to add annotations to existing PDFs with the help of Ghostscript...)
/Keywords (comma, separated, keywords, spelling mistakes, grammar mistakes, raising "smells")
/ModDate (D:20101219192842)
/CreationDate (D:20101219092842)
/Creator (pipitas' brainz)
/Producer (Ghostscript under the direction of pipitas)
/DOCINFO pdfmark
[ /Contents (Smell: This statement was bloody well rebutted by decades of academic research...)
/Rect [10 10 50 50]
/Subtype /Text
/Name Note
/SrcPg 2
/Open true
/ModDate (D:20101220193344)
/Title (A Comment on Page 2)
/Color [.5 .5 0]
/ANN pdfmark
然后,运行 Ghostscript 命令,如下所示。我现在假设 Windows —— 对于 Linux/Unix/MacOSX,使用 gs 而不是 gswin32c.exe 作为可执行文件,并使用 \ 而不是 ^ 作为行继续标记:
gs ^
-o original-annotated.pdf ^
-sDEVICE=pdfwrite ^
-dPDFSETTINGS=/prepress ^
original.pdf ^
my-pdfmarks.txt
瞧!您的输出 PDF 现在在第 2 页上有注释。
现在你可能不明白你到底在做什么:
-
my-pdfmarks.txt 文件的第一部分处理 PDF 的元数据。如果您不想这样做,只需将其删除即可。
- 第二部分在第 2 页 ('/SrcPg 2' ) 输出 PDF 的左下角,距离每个页面边框 10 个点 ('/Rect [10 10 50 50]'),使用偏绿色的 DeviceRGB 颜色 ('/Color [0.5 0.5 0]'),访问页面时默认打开('/Open true')。
my-annotations.txt 文件中的
可调整参数值(在每个关键字之后)都是但如下:
- “
/DOCINFO pdfmark”
- “
/Subtype /Text”
- “
/Name /Note”
- “
/ANN pdfmark”
例如,要使注释显示为纯红色,请使用/Color [1 0 0]。
为了完全理解 pdfmark 语法(并为您的程序添加更多调整),您需要在 Google 上搜索 Adobe 的 pdfmark 参考手册并阅读。
既然您说“编程没问题”,您现在拥有所有构建块,可以使用您选择的任何脚本语言自动执行此操作。