使用正则表达式自动为PDF文件添加注释

时间:2010-12-13 08:36:16

标签: regex pdf annotations comments ghostscript

我已经对学术论文进行了几年的评分,我开始看到拼写和语法错误的模式很多。此外,我注意到经验不足的学者倾向于使用某些能够立即为更有经验的研究人员带来“气味”的结构。

我想在PDF文件中自动识别和注释这些内容。是否有人知道我可以用来自动注释和评论PDF文件的脚本?也许这很简单,但我觉得我是第一个提出这个问题的人之一。

编程没问题。

3 个答案:

答案 0 :(得分:18)

要解决此任务,您需要做三件事:

  1. 一个很好的文本提取工具,用于从PDF中获取内容(您基本上要求这样做)。
  2. 了解您要使用哪些关键字以创建适当的文本注释/注释并触发PDF注释自动化(您说你有这个)。
  3. 将评论插入PDF的方法,最好是在正确的页面上,或者甚至在页面上正确的位置(您要求这样做)。
  4. 文本提取

    PDFlib的TET(文本提取工具包)允许您从任何PDF中提取文本。它是最强大的可用PDF文本提取工具,允许您通过命令行和脚本进行访问。它可以处理这些奇怪的东西(从文本提取的p.o.v.)作为连字以及不同的文本编码。更重要的是,它可以告诉您PDF页面上提取的任何字符或文本字符串的确切页码和坐标。

    插入PDF注释

    解析文本后,您的逻辑决定为哪个页面添加哪条评论,您可以使用PDFlib或Ghostscript向原始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
    

    Voila!您的输出PDF现在有第2页的注释。

    现在你可能不明白你到底在做什么:

    • my-pdfmarks.txt 文件的第一部分操纵PDF的元数据。如果你不想要这个,请删除它。
    • 第二部分在第2页添加注释('/ Subtype / Text''/ Name / Note')('/ SrcPg 2' )左下角的输出PDF,距离每个页面边框10个点('/ Rect [10 10 50 50]'),使用绿色的DeviceRGB颜色('/ Color [0.5 0.5 0]'),并在访问页面时默认打开它('/ Open true')。

    my-annotations.txt 文件中的可调参数值(在每个关键字之后)都是 BUT 以下内容:

    1. /DOCINFO pdfmark
    2. /Subtype /Text
    3. /Name /Note
    4. /ANN pdfmark
    5. 例如,要使注释显示为纯红色,请使用/Color [1 0 0]

      为了完全理解pdfmark语法(并为您的程序添加更多调整),您需要google for Adob​​e的 pdfmark参考手册并阅读。

      由于你说'编程没问题',你现在可以使用你选择的任何脚本语言自动执行此操作。

答案 1 :(得分:2)

如果我是你,我会从支持您正在寻找的事物的PDF Library SDK开始:

  • 提取内容
  • 为文档添加评论

一个缺点是您必须申请,Adobe可能会拒绝您的请求。

修改

PDFedit似乎很有希望。它是一个开源GUI应用程序,允许您手动或scripting修改PDF。

答案 2 :(得分:0)

VeryPDF PDF Highlighter命令行软件可能对您有用,您可以使用它来搜索PDF页面中的关键字,在这些关键字上放置突出显示注释或超链接,然后保存到新的PDF文件中。这项工作可以通过命令行或脚本自动完成。