与PDF

时间:2019-03-21 15:55:38

标签: pdf svg

考虑以下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的{​​{1}}字典也相同:

/a0

这可能意味着该SVG功能在PDF中没有等效项,或者可能意味着Inkscape的PDF导出器未实现等效项。我没有运气在the PDF specification中找到任何听起来像SVG功能的东西,这是赞成“无等效”的说法,但是PDF规范是巨大的,我很容易错过了一些东西。 >

所以问题 是:此SVG功能的PDF是否存在等效项,如果存在,我该如何使用?如果需要,我准备手动编辑导出的PDF。

注1:示例不多;我最初从学术论文中注意到了一个更为复杂的数字的问题,其中有许多这样的矩形对齐网格,但是某些网格位置是空的。我尝试放大原始图中的矩形,以使其重叠,但我找不到大量消除所有可见接缝的扩大,而又没有导致矩形渗入空白空间。

注2:在原始图中,该问题在Evince,pdf.js和两台由不同公司生产的打印机中很明显。

1 个答案:

答案 0 :(得分:0)

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

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