使用 Ghostscript 创建高亮 PDF 注释

Create Highlight PDF annotations with Ghostscript

我有以下 PostScript 文件,其中包含用于创建高亮注释的 pdfmark:

%PS

/Courier 30 selectfont
15 15 moveto
(Test)show

[ /Rect [0 0 80 30]
/Subtype /Highlight
/Color [.8 .8 0]
/QuadPoints [10 40 90 40 10 10 90 10]
/Contents (Test annotation)
/ANN pdfmark

showpage

(注意/QuadPoints字段的坐标不在the order the specs define, as Adobe implements it differently中。)

Ghostscript 创建带有注释的 PDF,但存在两个问题:

  1. 它在 Adob​​e Reader 和 Okular 中有效,但在 Evince 中不可点击。
  2. 更重要的是:高亮区域不是矩形,而是左右边缘圆润,如下图所示:

    为什么会这样,我怎样才能得到直边?

您应该首先查看 PDF 文件的内容,看看 Ghostscript(或更准确地说是 pdfwrite 设备)在其中放入了什么。发布一个示例 PDF 文件以供查看也是一个明智之举,并且还会告诉我们您使用的是哪个版本的 Ghostscript。

顺便说一句,header 应该是 %!PS,你漏掉了 '!'。当然,因为它是注释,所以对 PostScript 解释器来说无关紧要。

下面是 Adob​​e Acrobat Distiller 的注释输出,使用您问题中的代码:

1 0 obj
<</Type/Annot/Subtype/Highlight/Rect[0 0 80 30]/C[.8 .8 0]/QuadPoints[10 40 90 40 10 10 90 10]/Contents(Test annotation)>>
endobj

这与 Ghostscript 的 pdfwrite 设备相同:

8 0 obj
<</Type/Annot
/Rect [0 0 80 30]
/C [0.8 0.8 0]
/QuadPoints [10 40 90 40 10 10 90 10]
/Contents(Test annotation)
/Subtype/Highlight>>endobj

这些本质上是相同的。

所以回答你的问题:

  1. 如果它在 Acrobat 中有效,那么也许你应该问 Evince 开发人员这个问题。

  2. 圆边是由读取PDF注释的应用程序绘制的。由于 Acrobat 以这种方式绘制它们,因此其他人也这样做(包括 Ghostscript 的 PDF 解释器)。如果您不喜欢它,您将不得不更改查看应用程序。