PDF中的shape-rendering =“crispEdges”的等价物

问题描述 投票:0回答:1

考虑以下SVG:

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 40 20">
  <g shape-rendering="crispEdges">
    <rect x="0" y="0" width="20" height="20" fill="#b4b4b4"/>
    <rect x="20" y="0" width="20" height="20" fill="#b4c4b4"/>
  </g>
</svg>

shape-rendering="crispEdges"注释的预期效果是防止两个矩形之间存在可见的接缝,无论渲染如何缩放。在Firefox和Chromium中查看SVG文件时,这可以正常工作。但是,当我使用inkscape -A将SVG转换为PDF并查看PDF时,我仍然可以在某些缩放级别看到可见的接缝,例如如在此屏幕截图中:

screen shot of PDF converted from example SVG, viewed in Evince at a magnification level where there is a visible seam between the two rectangles

此外,由inkscape生成的PDF页面流与shape-rendering="crispEdges"相同或不相同

1 0 0 -1 0 15 cm
q
0.705882 0.705882 0.705882 rg /a0 gs
0 0 15 15 re f
0.705882 0.768627 0.705882 rg 15 0 15 15 re f
Q

而引用/ExtGState/a0字典也是相同的:

/ExtGState <<
  /a0 <<
    /CA 1
    /ca 1
  >>
>>

这可能意味着此SVG功能的PDF中没有等效内容,或者可能意味着Inkscape的PDF导出器未实现等效功能。我没有运气在the PDF specification找到任何听起来像这个SVG功能的东西,这是支持“没有等价”的论据,但PDF规范是巨大的,我很容易错过了一些东西。

所以问题是:在这个SVG功能的PDF中是否存在等价物,如果存在,我该如何使用它?如果必要,我准备手动编辑导出的PDF。

注1:这个例子是最小的;我最初从一篇学术论文中发现了一个更加复杂的问题,其中有许多这样的矩形与网格对齐,但有些网格位置是空的。我尝试放大原始图中的矩形,使它们重叠,我无法找到消除所有可见接缝的放大量,也没有明显地导致矩形渗入空白区域。

注2:使用原始图,使用Evince,pdf.js和不同公司制造的两台打印机可以看到问题。

pdf svg
1个回答
0
投票

PDF中最接近的是使用着色网格(例如张量和格子自由形式网格)。这将删除大多数观众中的条子。

一些PDF查看器(如Acrobat,Xodo / PDFTron)具有最小化这些条子外观的选项,但通常它在许多实现中都没有很好地实现。

© www.soinside.com 2019 - 2024. All rights reserved.