4

在此处输入图像描述

我以字母 Z 的形式创建了一个墨水注释,如上所示,但是 Z 的角是圆角的。为什么会这样?我怎样才能避免这种额外的美化,使角落保持锐利并且点通过直线连接?

PDF代码:

%PDF-1.6
%μῦ

1 0 obj
<</Type/Catalog/Pages 2 0 R>>
endobj

2 0 obj
<</Type/Pages/Kids[3 0 R]/Count 1>>
endobj

3 0 obj
<</Type/Page/Parent 2 0 R/Resources<<>>/MediaBox[0 0 500 800]/Annots[4 0 R]>>
endobj

4 0 obj
<</Type/Annot/Subtype/Ink/Contents(<enter description here>)/InkList[[150 300 250 300 150 200 250 200]]/Rect[200 250 300 150]/P 3 0 R/F 4/C[1 0 0]>>
endobj

xref
0 5
0000000000 65536 f 
0000000017 00000 n 
0000000063 00000 n 
0000000115 00000 n 
0000000209 00000 n 

trailer
<</Size 5/Root 1 0 R>>

startxref
374
%%EOF
4

2 回答 2

5

我不确定这里发生了什么,现在没有时间调查。

但这里有一些直接的观察结果作为额外的数据点:

  • Mac OS X 的 Preview.app 显示带有锐利边缘的 Z 形。
  • Adobe Reader X 和 Adob​​e Acrobat X Pro(在 Mac OS X 上)显示带有圆边的 Z 形。
  • Ghostscript v9.05 显示了带有圆边的 Z 形。
  • Ghostscript 是从今天的 Git 存储库中自行编译的,它显示了带有圆边的 Z 形。

更新:

好的,我快速浏览了 PDF-1.7 的官方 ISO 规范。它说的是关于/Subtype /Ink注释的/InkList

一个由 n 个数组组成的数组,每个数组代表一个描边路径。每个数组应是默认用户空间中一系列交替的水平和垂直坐标,指定路径上的点。绘制时,点应通过直线或曲线实现相关的方式连接。

(来自第12.5.6.13 章 Ink Annotations,我的重点)

因此,一种实现显示直线,另一种显示曲线是完全“合法的”。:-(

叹...

更新 2:

因此,如果要强制 Z 形在所有实现中显示为直线,则需要绘制 3 条不同的直线,每条直线由不同的数组表示,并将这 3 个数组放入容器数组中...

更改这部分代码:

/InkList
[
  [150 300 250 300 150 200 250 200]
]

对此:

/InkList
[
  [150 300 250 300]
  [250 300 150 200]
  [150 200 250 200]
]

你的 Z 形会显示出尖角。

于 2012-07-31T19:28:56.230 回答
2

解决方案是还创建注释外观(注释字典中的 /AP 条目)。如果绘制直线的注释外观出现在 PDF 文件中,那么它将在显示文件时使用,您将在任何查看器中获得相同的结果。如果外观不存在,则查看器将根据注释定义构建外观,在您的情况下,此查看器构建的外观取决于实现。

于 2012-08-01T08:16:20.860 回答