在PDF中恢复图形状态后,是否可以为路径绘制笔划?

在PDF中恢复图形状态后,是否可以为路径绘制笔划?,pdf,Pdf,我在PDF中画线,我想以1:1以外的比例缩放 问题是,我得到的笔划看起来像是用卡利笔画的 是否可以在PDF中调整路径大小,恢复图形状态,然后绘制上一条路径的笔划 这是我如何在PDF中获得校准线条笔划的方法: 5 w // width of stroke q // saves the current graphics state 0 1 0 0.2 0 0 cm // transformation matrix scaling wit

我在PDF中画线,我想以1:1以外的比例缩放

问题是,我得到的笔划看起来像是用卡利笔画的

是否可以在PDF中调整路径大小,恢复图形状态,然后绘制上一条路径的笔划

这是我如何在PDF中获得校准线条笔划的方法:

5 w               // width of stroke
q                 // saves the current graphics state 
0 1 0 0.2 0 0 cm  // transformation matrix scaling with height reduced to 20%
0 10 m            // Start of line
10 10 l           // line to
20 100 l
30 100 l
40 10 l
S                 // draws stroke
Q                 // Restores graphics state
在HTML5画布中,可以在恢复图形状态后绘制笔划,以便通过等宽线绘制路径

在PDF中,将S放在Q之后不起作用


有没有办法在PDF中获得相同的结果,其中只缩放线条路径,而不缩放笔划本身?

请查看PDF规范第113页的图9-图形对象。它说明,一旦开始构建路径,就只允许使用用于路径构建、路径剪裁和路径绘制的操作符Q仅在路径绘制操作符之后才允许作为特殊图形状态操作符,例如,您的S

图下方的示例中也说明了这一点:

路径构造操作符mre表示开始 路径对象的属性。在路径对象内部,附加的路径构造 允许使用操作符,剪切路径操作符WW*,但不是一般的图形状态操作符,如WJ。 路径绘制操作符(如Sf)结束路径对象 并返回到页面描述级别

因此,对于“是否有某种方法可以在PDF中获得相同的结果,其中只有线路径被缩放,而不是笔划本身?”:否,您必须明确选择较小的笔划宽度,以补偿变换矩阵引入的不同比例


你说“在PDF中,在Q之后放S不起作用”;发生了什么?谢谢你的回复。很糟糕,除了手动计算坐标的纵横比之外,没有更好的解决方案。当x y坐标值必须被描述为绝对值时,例如:“11.33533433,43.4335334 l”,而不仅仅是带有定标器的“10 80 l”,这会使PDF变得更大。如果我使用0宽度,则PDF阅读器会将线条显示为相等宽度,即使aspectratio是错误的。缩放后,0仍然为0,其含义是“0的线宽应表示在设备分辨率下可以渲染的最细线条”(ISO 32000-1:2008第8.4.3.2节)它独立于ctm。请记住,对包含PDF操作符的流进行压缩是很常见的;因此,生成的文件通常可以保持非常小。另外,不要过分强调精度:这里的单位是用户空间,单位(“1”)已经只有1/72英寸。@davidvandriesche:典型的PDF渲染器只使用单精度浮点;双精度仍然是非常可选的。