Безголовая Chrome PDF-печать имеет плохое качество в больших документах - PullRequest
0 голосов
/ 14 октября 2018

Я использую Headless Chrome для распечатки файлов PDF с использованием метода printToPDF CDP.Если документ содержит большое количество страниц, то, если я распечатываю файл PDF на самом деле или распечатываю в другой файл PDF, качество страниц ухудшается по мере увеличения количества страниц.

Почему это происходит и как я могу это исправить?

Я использую Google Chrome 69.0 в автономном режиме, на Win10, с Node.js v8.11.3.

Например, мы хотели бы распечатать следующий HTML-контент без каких-либо дополнительных настроек printToPDF.

<div class="lorem">
1) Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur aliquet sem sed neque faucibus dignissim. Sed congue sodales ex, vel bibendum dolor placerat vel. Curabitur ultricies luctus dui, a accumsan purus placerat a. Nullam ut lectus ultricies, mattis enim non, rutrum erat. Nulla sodales tellus in bibendum vehicula. Aenean aliquam tellus eu magna semper rutrum. Donec ultrices vestibulum varius. Suspendisse posuere arcu augue, at varius odio dignissim nec. Vestibulum nec orci faucibus, commodo ante vitae, porta mi. Nunc non efficitur mauris. Vestibulum quis sapien nisl. Duis quam odio, faucibus at posuere eget, egestas nec augue. Aliquam finibus felis felis, ut tincidunt erat gravida pretium.<br><br>
2) Ut nec consectetur neque. Ut ornare tristique libero in vehicula. Quisque eget finibus est. Phasellus id enim lacus. Integer vestibulum nisi nec leo lacinia fermentum. Mauris mattis posuere massa, in mattis ligula molestie sed. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse imperdiet, urna eu tincidunt viverra, ipsum ligula placerat erat, at pulvinar nunc sapien et risus. Aenean pharetra pharetra libero ut euismod. Etiam sit amet tellus rutrum ante lobortis suscipit suscipit sit amet leo. Fusce id ipsum orci. Nulla suscipit malesuada massa. Vestibulum vitae vehicula diam.
</div>

Если мы распечатываем PDF-файл на принтере, то качество хорошее.Следующий снимок экрана показывает результат:

enter image description here

Теперь добавьте следующее <div> сразу после тега <body>, перед #lorem <div>:

<div style="height: 1999900vh; margin: 0; padding: 0; border: 0; display: block;"></div>

Это составляет 19999 пустых страниц перед #lorem <div>.Теперь распечатайте файл с настройкой 'pageRanges': '20000-'.Если мы откроем файл PDF, он выглядит хорошо, но когда мы распечатываем его из Adobe Reader, например, с помощью PDF-принтера Foxit Reader, он выглядит очень плохо:

enter image description here

Я пытался добавить флаг --disable-accelerated-2d-canvas для улучшения качества, но это не помогло.Я также пытался добавить флаг --use-system-default-printer и распечатать PDF-файлы с помощью Foxit, но это не сработало.Для меня было бы важно напечатать точно отображенные страницы, независимо от того, где они находятся в реальном макете.Я также не понимаю, почему это происходит.

Я ожидал, что страницы имеют одинаковое качество, независимо от того, где они находятся в документе.

Когда я открываю файл PDF вAdobe Reader или Foxit Reader, тогда выглядит хорошо.Когда я печатаю из Adobe Reader на принтере или с Foxit в другой файл PDF, качество очень плохое.

Любые идеи могут помочь решить эту проблему.

...