Эквивалент рендеринга формы = "crispEdges" в PDF - PullRequest
0 голосов
/ 21 марта 2019

Рассмотрим следующий 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, я все равно вижу видимый шов при некоторых уровнях масштабирования, например, как на этом снимке экрана:

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

Кроме того, поток страниц 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 и двух принтерах, изготовленных разными компаниями.

1 Ответ

0 голосов
/ 22 марта 2019

Самым близким в PDF будет использование теневых сеток (например, тензорных и решетчатых сеток свободной формы).Это удалит осколки в большинстве средств просмотра.

Некоторые средства просмотра PDF (например, Acrobat, Xodo / PDFTron) имеют параметры, которые сводят к минимуму внешний вид этих осколков, но, как правило, они плохо реализованы во многих реализациях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...