Pdf.js: Печать нечеткая / размытая

Созданный на 20 февр. 2013  ·  38Комментарии  ·  Источник: mozilla/pdf.js

если я печатаю PDF-файл с FF19 и новой функцией PDF, печать будет размытой.

если я печатаю с помощью acrobat, шрифт четкий.

left = акробат
right = ff pdf

есть идея?

https://plus.google.com/105533044232180103026/posts/dYL855pBkSM

3-upstream 4-printing

Самый полезный комментарий

Поскольку https://github.com/mozilla/pdf.js/commit/c09f634bb6c713f6dc36628145788c88e60448e0 теперь есть функция renderPage в web/viewer.js а разрешение печати жестко запрограммировано как 150 DPI.

function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size) {
  var scratchCanvas = activeService.scratchCanvas;
  var PRINT_RESOLUTION = 150;
  var PRINT_UNITS = PRINT_RESOLUTION / 72.0;

Чтобы изменить разрешение печати на 300 точек на дюйм, просто измените строку ниже.

var PRINT_RESOLUTION = 300;

Согласно тегам выпуска, все версии PDF.js от 1.7.x до 1.10.x теперь должны иметь эту возможность. Я удивлен, что это нигде не задокументировано.

В идеале должна быть возможность изменять разрешение печати из параметров запроса вместо изменения web/viewer.js .

Дополнительные сведения см. В разделе « Как повысить качество печати файла PDF с помощью средства просмотра PDF.js» .

Все 38 Комментарий

Я предполагаю, что это потому, что вывод pdf.js - это холст (точнее, один холст на страницу), который, вероятно, не соответствует 100% разрешению принтера.

Со мной такое тоже бывает.

DSCF8966

  • top = Firefox, встроенный в PDF.js
  • bottom = Adobe Acrobat

Качество печати просто неприемлемое.
Кроме того, встроенный PDF.js создает черную рамку справа и снизу, как если бы это было при фотокопировании листа меньшего размера.

Любое решение? Я на горячей линии, и у меня 200 пользователей с этой проблемой.

@BadFriend , @musiphil , какую операционную систему используете вы или ваши пользователи?

Та же проблема здесь, на FFox 19 на принтере WinXP to PostScript. Тонкие горизонтальные линии размыты, а вертикальные линии четкие. Верхние и нижние колонтитулы тоже подойдут.

Я использую Firefox 19.0 в Windows 7 и распечатал эти документы на принтере HP Color LaserJet CP4525 с PCL6.

FF19 + Win7 64bit + OKI561 через PCL6 через порт WSD или Adobe PDF (Adobe Acrobat 9.2.0)

IMG_20130222_074757

слева: плагин Chrome
в центре: Adobe Reader
справа: Firefox pdf.js

Загрузить PDF -> http://www.file-upload.net/download-7241349/offers-36.pdf.html

См. Также # 2771. Цитата @brendandahl :

Низкое качество отслеживается на https://bugzilla.mozilla.org/show_bug.cgi?id=811002 .

Исправлена ​​ошибка апстрима. Это все еще проблема с последними версиями Firefox и PDF.js?

Исправлена ​​ошибка апстрима. Это все еще проблема с последними версиями Firefox и PDF.js?

Я думаю, что это было исправлено только для Windows. Добавлена ​​новая ошибка для OSX (ошибка 932313), но я не уверен, что она действительна (см. Мой комментарий на https://bugzilla.mozilla.org/show_bug.cgi?id=932313#c2).

Пока проблема не будет исправлена ​​в Linux, я голосую за сохранение этой ошибки.

Это исправлено?
Эта демонстрационная страница нормально распечатывается из firefox
http://mozilla.github.io/pdf.js/web/viewer.html
https://dl.dropboxusercontent.com/u/1383480/work/printing/2015-02-16%2011.29.52.jpg

из Chrome и Chromium результат печати ТАК размытый, я не могу найти слов, чтобы его описать
https://dl.dropboxusercontent.com/u/1383480/work/printing/2015-02-16%2011.29.58.jpg
Я попытался установить dpi для принтера и PRINT_SCALE RATIO на 1, 3, 4, 8 - без эффекта
Пробовал последнюю версию с github (8614c17) - тоже самое
(среда: Chrome, Chromium, windows 7)

Я что-то упускаю?
Не могли бы вы просмотреть это и, возможно, предложить быстрое решение?

@ jonny64, спасибо, что сообщили об этом! К сожалению, здесь мало что можно сделать для Chrome / Chromium. Лучшее качество печати в Firefox достигается за счет использования специального API для печати, который доступен в Firefox, но не доступен в Chrome. В те дни я предлагал API в качестве стандарта, но особого интереса не было, и поэтому он все еще доступен только в Firefox.

:) @jviereck , ну ладно, я должен жить с этим
Я пробовал внутреннюю программу просмотра Chrome
Печатается нормально, но режим "Сохранить" не работает в режиме киоска.
(нам нужно распечатать с превью из Chrome в полноэкранном режиме киоска)

К счастью, некоторое время назад у меня был опыт работы с C
https://pdfium.googlesource.com/pdfium.git
Это правильный источник для внутренней программы просмотра Chrome?
Что лучше - скрыть «Сохранить» в настройках Chrome или когда задана командная строка --kiosk?
У вас есть идеи высокого уровня, где и как я могу их реализовать?

Насколько я могу судить, это все еще ошибка OS X и последней версии Firefox Dev Edition, по крайней мере, в некоторых обстоятельствах.

Как воспроизвести без принтера:

  • Нажмите «Печать» в программе просмотра PDF.js.
  • Щелкните кнопку «PDF».
  • Выберите «Сохранить как PostScript…» ( не «Сохранить как PDF…»).
  • Откройте сохраненный файл .ps в Preview.app.

Текст не выделяется, и при увеличении масштаб текста становится довольно неровным. Текст отлично выглядит, если вы выбрали «Сохранить как PDF…»

Я пробовал увеличить разрешение по умолчанию в
web / app.js :: beforePrint
<< var pageSize = this.pdfViewer.getPageView (0) .pdfPage.getViewport (1);

var pageSize = this.pdfViewer.getPageView (0) .pdfPage.getViewport (2);

и web / pdf_page_view.js :: beforePrint
<< var viewport = pdfPage.getViewport (1);

var viewport = pdfPage.getViewport (2);

Печать идет медленнее, но качество улучшилось

Некоторые улучшения после # 7677

Были ли обновления по этой проблеме за последние 4 месяца? Это все еще заметно в последней версии pdf.js. Недавно я развернул развертывание с использованием pdf.js, и теперь у меня есть документы, печатаемые с нечеткими буквами, что не было проблемой для встроенной программы чтения PDF-файлов Chrome.

Вы можете воспроизвести эту проблему, распечатав с собственной демонстрационной страницы Mozilla. Я знаю, что это не проблема драйвера, потому что это также происходит при печати в PDF.

Похоже, что некоторым людям, использующим pdf.js в производстве, пришлось полностью обойти pdf.js, чтобы обойти эту проблему ( пример ).

В настоящее время более высокое качество печати невозможно без значительного увеличения использования памяти, что не подходит большинству браузеров. Бэкэнд холста не может обеспечить такую ​​функциональность. Открыт проект (https://github.com/mozilla/pdf.js/projects) для исследования с использованием прототипа серверной части SVG для высококачественной печати.

Я обнаружил, что PDF.js имеет приемлемое качество печати и нечеткое качество печати в зависимости от установленной версии Firefox, поэтому я хотел бы взглянуть на то, что изменилось между версиями, из которых я мог печатать. У меня есть https://imgur.com/7Beh7MO , который выводится прямой печатью слева направо Firefox 52, 47.0.2 и 42, причем первые два, по крайней мере, являются свежими обновлениями. Как показано, что-то изменилось в PDF.js между выпусками FF 47.0.2 и FF 52, что, похоже, ухудшило качество, поэтому, если у кого-то есть информация о том, какие закладки нужно искать для начала для этих версий Firefox, я бы не стал Не против взглянуть, чтобы начать.

Глядя на версии PDF.js репозитория Firefox, я вижу, что 47.0.2 была версией 1.4.121, что соответствует фиксации 51f6aba (может быть фиксация после, которая является be1e12d), и что Firefox 52 поставляется с PDF.js 1.6. 315, что примерно соответствует c23f124. В настоящее время я изучаю эти коммиты, но разница между ними, вероятно, составляет 400 коммитов, и любая информация о том, где лежит печать, была бы очень полезна.

Как показано, что-то изменилось в PDF.js между выпусками FF 47.0.2 и FF 52, что, похоже, ухудшило качество,

Хотя, безусловно, возможно, что причиной этого является изменение в PDF.js, я бы (по крайней мере, на начальном этапе) не стал бы полностью сбрасывать со счетов возможность того, что проблема может быть связана, например, с графикой / кодом печати в других частях Firefox.
Может быть полезно и, возможно, даже быстрее, использовать http://mozilla.github.io/mozregression/, чтобы попытаться найти диапазон регрессии.

Использует ли кнопка печати внутри PDF.js Firefox для печати? Мой
предположение, основанное на том, что плагин доступен в других браузерах
заключается в том, что не возникнет никаких проблем, связанных с тем, как основной браузер
обрабатывает печать. Это также поддерживается диалоговым окном обработки печати.
перечисляет рендеринг PDF.js как задачу отправки данных на принтер. я буду
сделайте дополнительное тестирование и попробуйте запустить PDF.js как плагин и протестируйте
разные версии можно посмотреть, меняет ли это что-нибудь.

14 марта 2017 г. в 9:58 «Йонас Дженвальд» [email protected] написал:

Как показано, что-то изменилось в PDF.js между выпусками FF 47.0.2 и FF 52.
что, кажется, испортило качество,

Хотя, безусловно, возможно, что причиной этого является изменение PDF.js, я
не будет (по крайней мере на начальном этапе) полностью исключить возможность того, что
проблема может быть связана, например, с графикой / кодом печати в других частях
Fire Fox.
Может быть полезно и, возможно, даже быстрее, использовать
http://mozilla.github.io/mozregression/, чтобы попытаться найти регресс.
диапазон.

-
Вы получили это, потому что прокомментировали.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/mozilla/pdf.js/issues/2750#issuecomment-286428765 ,
или отключить поток
https://github.com/notifications/unsubscribe-auth/AOZHcyFJnLjI8MhAXspe-SIikmMA7YWOks5rlpzwgaJpZM4AcblL
.

-
Нажмите, чтобы прочитать уведомления:
http://www.mediweightlossclinics.com/sig/ Конфиденциальное сообщение
http://www.mediweightlossclinics.com/sig/ Заявление об отказе от ответственности в образовательных целях
http://www.mediweightlossclinics.com/sig/ Заявление о раскрытии информации о франшизе

Раньше мы использовали специфичный для Mozilla mozPrintCallback везде, где могли, если бы он поддерживался, то есть в версиях надстройки и без надстройки в браузере Firefox, поскольку это предположительно позволяло нам печатать с меньшим объемом памяти. расход и качество выше. Однако мы попытались уменьшить его использование, потому что оно специфично для Firefox и иногда содержит ошибки, поэтому теперь мы используем его только в надстройке Firefox (https://github.com/mozilla/pdf.js/blob/master/ web / firefox_print_service.js).

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

Обратитесь к https://github.com/mozilla/pdf.js/commit/c09f634bb6c713f6dc36628145788c88e60448e0 для большей части этих изменений. Возможно, вы захотите проверить, есть ли разница в качестве печати из Firefox с надстройкой и без нее.

Поскольку https://github.com/mozilla/pdf.js/commit/c09f634bb6c713f6dc36628145788c88e60448e0 теперь есть функция renderPage в web/viewer.js а разрешение печати жестко запрограммировано как 150 DPI.

function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size) {
  var scratchCanvas = activeService.scratchCanvas;
  var PRINT_RESOLUTION = 150;
  var PRINT_UNITS = PRINT_RESOLUTION / 72.0;

Чтобы изменить разрешение печати на 300 точек на дюйм, просто измените строку ниже.

var PRINT_RESOLUTION = 300;

Согласно тегам выпуска, все версии PDF.js от 1.7.x до 1.10.x теперь должны иметь эту возможность. Я удивлен, что это нигде не задокументировано.

В идеале должна быть возможность изменять разрешение печати из параметров запроса вместо изменения web/viewer.js .

Дополнительные сведения см. В разделе « Как повысить качество печати файла PDF с помощью средства просмотра PDF.js» .

Если исправление @mpryvkin допустимо, его обязательно следует указать в качестве опции в about: config.

Можно ли это параметризовать?

Я пробовал увеличить разрешение по умолчанию в
web / app.js :: beforePrint
<< var pageSize = this.pdfViewer.getPageView (0) .pdfPage.getViewport (1);

var pageSize = this.pdfViewer.getPageView (0) .pdfPage.getViewport (2);

и web / pdf_page_view.js :: beforePrint
<< var viewport = pdfPage.getViewport (1);

var viewport = pdfPage.getViewport (2);

Печать идет медленнее, но качество улучшилось

оно работает!

Базовая программа просмотра теперь предоставляет параметр printResolution app благодаря # 10854, поэтому предварительно созданную программу просмотра больше не нужно модифицировать для этого. Обратите внимание, что увеличение разрешения печати при одновременном повышении качества печати может замедлить печать и / или сделать браузер менее отзывчивым, но теперь это компромисс, который пользователи-зрители могут сделать сами.

@timvandermeij Спасибо за обновление! Чтобы уточнить, вы говорите о «пользователях» как о «пользователях библиотеки pdf.js» или о «пользователях Firefox»? Я попадаю в последнюю категорию (и я считаю, что эта ошибка касается пользователей Firefox), и я пытаюсь выяснить, доступны ли эти AppOptions в Firefox каким-либо образом.

Обновление: я считаю, что @timvandermeij имеет в виду «пользователей библиотеки pdf.js». Я также считаю, что AppOptions доступны в Firefox через about: config , но не автоматически (т. Е. Кто-то, вероятно, должен изменить код firefox, чтобы включить его), поскольку большинство, но не все AppOptions существуют там. pdfjs.cursorToolOnLoad находится в about: config , но не в defaultUrl или disableHistory , предположительно потому, что они не имеют смысла в контексте Firefox.

@raztus Да, я имел в виду пользователей библиотеки. Сборки Firefox были исключены из этой области (https://github.com/mozilla/pdf.js/pull/10854#discussion_r287325125), потому что нелегко сказать, что происходит, например, с быстродействием браузера и использованием памяти, если вы увеличите это значение . Если мы получим больше отзывов по этому поводу, я не против того, чтобы сделать выбор доступным и для сборок Firefox (mozcentral).

@timvandermeij Спасибо и @ kleins05 за это улучшение. Я обновил свой пост об этой функции.

Правильно ли я предполагаю, что с помощью этого обновления разрешение печати можно установить с помощью приведенного ниже кода?

document.addEventListener('webviewerloaded', function() { PDFViewerApplicationOptions.set('printResolution', 300); });

Да, я думаю, вы правы. Событие webviewerloaded действительно является правильным событием для настройки параметров приложения; видеть:
https://github.com/mozilla/pdf.js/blob/c91f437eaaff79b660805e020f4fa9d4a2a7fe65/web/viewer.js#L208 -L210
После этого всегда должен быть доступен PDFViewerApplicationOptions . Я не пробовал этот конкретный фрагмент, но при осмотре он выглядит хорошо, и вы можете попробовать его, проверив последний код ветки master , добавив этот фрагмент и проверив, улучшается ли качество печати.

@raztus Да, я имел в виду пользователей библиотеки. Сборки Firefox были исключены из этой области ( # 10854 (комментарий) ), потому что нелегко сказать, что происходит, например, с реактивностью браузера и использованием памяти, если вы увеличите это значение. Если мы получим больше отзывов по этому поводу, я не против того, чтобы сделать выбор доступным и для сборок Firefox (mozcentral).

@timvandermeij Я бы с удовольствием printResolution ?

Вы можете поэкспериментировать с этим, открыв программу просмотра по умолчанию (https://mozilla.github.io/pdf.js/web/viewer.html, которая всегда запускает самый последний код ветки master или настраиваемую проверку) , открыв веб-консоль и введя PDFViewerApplicationOptions.set('printResolution', 300); . Это установит разрешение печати на 300 точек на дюйм вместо 150 точек на дюйм по умолчанию. Если вы затем нажмете кнопку печати, вы заметите разницу в качестве печати, а также во времени, необходимом для рендеринга страниц и потребления памяти (я просто попробовал это сам, чтобы убедиться, что эти шаги работают). Главный вопрос заключается в том, как разрешение печати в точках на дюйм соотносится с использованием памяти / временем рендеринга для различных типов файлов PDF, таких как малый / средний / большой размер, а также текстовых документов или документов с большим количеством изображений. Если мы знаем больше о том, как он ведет себя в различных реальных сценариях, мы могли бы также ввести настройку для сборок Firefox и / или обновить значение по умолчанию.

Я пробовал описанный выше метод, но получаю неопределенное значение.
Это Chrome Canary версии 77.0.3818.0 (официальная сборка) canary (64-разрядная версия)

Да, при выполнении этого будет получено undefined потому что установка параметра не имеет возвращаемого значения, но если вы затем напечатаете снова, качество печати повысится.

Спасибо.
Почему это доступно не как настраиваемая пользователем опция, а только как настраиваемая программно?

Это объясняется в комментариях выше, в частности https://github.com/mozilla/pdf.js/issues/2750#issuecomment -496697032. Сначала мы хотим поэкспериментировать с ним, прежде чем сделать его более доступным. Обратите внимание, что всего день назад был объединен PR # 10879, что должно немного помочь с проблемой использования памяти, и теперь, когда это, по крайней мере, настраивается программно, мы можем легче экспериментировать с ним и включать улучшения.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги