考虑以下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时,在某些缩放级别(例如,如以下屏幕截图所示:
此外,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
的{{1}}字典也相同:
/a0
这可能意味着该SVG功能在PDF中没有等效项,或者可能意味着Inkscape的PDF导出器未实现等效项。我没有运气在the PDF specification中找到任何听起来像SVG功能的东西,这是赞成“无等效”的说法,但是PDF规范是巨大的,我很容易错过了一些东西。 >
所以问题 是:此SVG功能的PDF是否存在等效项,如果存在,我该如何使用?如果需要,我准备手动编辑导出的PDF。
注1:示例不多;我最初从学术论文中注意到了一个更为复杂的数字的问题,其中有许多这样的矩形对齐网格,但是某些网格位置是空的。我尝试放大原始图中的矩形,以使其重叠,但我找不到大量消除所有可见接缝的扩大,而又没有导致矩形渗入空白空间。
注2:在原始图中,该问题在Evince,pdf.js和两台由不同公司生产的打印机中很明显。
答案 0 :(得分:0)
PDF中最接近的一件事是使用着色网格(例如张量和自由晶格网格)。这将删除大多数观众中的条子。
某些PDF查看器(例如Acrobat,Xodo / PDFTron)具有使这些条的外观最小化的选项,但通常在许多实现中都无法很好地实现。