PrintToPDF () из Electron (Chromium's) ужасно рендерит svg для изображения границ - PullRequest
0 голосов
/ 01 марта 2019

Я работаю над приложением Electronjs, которое генерирует PDF-файлы из предоставленной пользователем разметки.Я пытался воссоздать определенный эффект / стиль границы, и после нескольких дней работы я думал, что прибил его.CSS-рамки с изображениями границ хорошо не документированы.

Я должен был проверить вывод, прежде чем объявить об успехе.enter image description here

Справа - граница, отображаемая с помощью Electron / chromium, а слева - вывод PDF из моего приложения.Оба были увеличены (возможно, не до одного и того же точного увеличения).

Очевидно, что в какой-то момент printToPDF растеризует изображение границы.Это отличается от простых тегов svg по всей разметке, которые, по-видимому, преобразуются в прямой вектор в любом формате, в котором они хранятся в pdf.

Границы, которые захотят создать пользователи моего приложения, вероятно, будут наилучшим образом реализованы.как векторы.Просто отклонить его как доступную функцию для меня не вариант.

Так в чем здесь виноват, и как я могу это исправить?Это вопрос ожидания исправления в рендеринге хрома, и это даже в конвейере?

Создание всей границы в виде одного изображения SVG и использование ярмарок изображений css-background так же плохо, что тожерастеризован с досадно низким разрешением (хотя, насколько я могу судить, не с тем же разрешением).Даже если это сработало, это далеко не идеально ... один и тот же стиль рамки можно было бы использовать дюжину или более раз в одном документе, каждый с разной шириной и высотой, тогда как border-image делает тяжелую работу за вас.

Если граница предоставляется в виде тега svg, требуется еще больше хитрости css, чтобы поместить текстовое содержимое поверх него в правильном месте, а вывод в pdf выглядит так, как будто это мешает выбрать текст длякопирование / вставка (хотя я меньше беспокоюсь об этом аспекте).

Может кто-нибудь предложить стратегию для этой проблемы?

[править] Я, должно быть, как-то пропустил это, но если вы посмотритеближе к изображению слева сами углы остаются в виде вектора в формате PDF, растеризуются только горизонтали и вертикали.Я не знаю, важно ли это понимать лучше или нет.Я предполагаю, что это как-то связано с необходимостью повторять отрезок, чтобы сделать более длинные строки ...

...