为什么此墨迹注释显示曲线而不是直线?

Som*_*ent 4 pdf pdf-generation

在此输入图像描述

我创建了一个字母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
Run Code Online (Sandbox Code Playgroud)

Kur*_*fle 5

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

但是这里有一些即时观察作为额外的数据点:

  • Mac OS X的Preview.app显示具有锐边的Z形.
  • Adobe Reader X和Adobe Acrobat X Pro(在Mac OS X上)显示带有圆边的Z形.
  • Ghostscript v9.05显示了带圆边的Z形.
  • 从今天的Git存储库自编译的Ghostscript显示了带有圆边的Z形.

更新:

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

一组n个数组,每个数组代表一条描边路径.每个数组应该是默认用户空间中的一系列交替的水平和垂直坐标,指定沿路径的点.绘制时,点应通过直线或曲线以依赖于实现的方式连接.

(来自第12.5.6.13节"墨水注释",我的重点)

因此,一个实现显示直线是完全"合法的",另一个显示曲线.:-(

叹...

更新2:

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

更改代码的这一部分:

/InkList
[
  [150 300 250 300 150 200 250 200]
]
Run Code Online (Sandbox Code Playgroud)

对此:

/InkList
[
  [150 300 250 300]
  [250 300 150 200]
  [150 200 250 200]
]
Run Code Online (Sandbox Code Playgroud)

你的Z形将显示尖角.