Рассмотрим следующий 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"
состоит в том, чтобы предотвратить видимый шов между двумя прямоугольниками, независимо от того, как масштабируется рендеринг.Это работает как задумано при просмотре файла SVG в Firefox и Chromium.Однако, когда я конвертирую SVG в PDF с использованием inkscape -A
и просматриваю PDF, я все равно вижу видимый шов при некоторых уровнях масштабирования, например, как на этом снимке экрана:
Кроме того, поток страниц PDF, созданный inkscape, идентичен 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
>>
>>
Это может означать, что в PDF нет эквивалента этой функции SVG, или это может означать, что экспортер PDF Inkscape не реализует эквивалент.Мне не повезло найти что-то, что походит на эту особенность SVG в спецификации PDF , которая является аргументом в пользу «нет эквивалента», но спецификация PDF гигантская, и я легко мог пропуститьчто-то.
Итак, вопрос : есть ли в PDF эквивалент этой функции SVG, и если есть, как ее использовать?Я готов отредактировать экспортированный PDF вручную, если потребуется.
Примечание 1: Пример минимальный;Первоначально я заметил проблему с гораздо более сложной фигурой из академической статьи, в которой есть много таких прямоугольников, выровненных по сетке, но некоторые позиции сетки пусты.Я попытался увеличить прямоугольники на исходном рисунке так, чтобы они перекрывались, и мне не удалось найти такое увеличение, при котором все видимые швы были бы устранены без видимого побуждения прямоугольников сливаться в пустые пространства.
Примечание2: На исходном рисунке проблема видна в Evince, pdf.js и двух принтерах, изготовленных разными компаниями.