Как изменить первый номер страницы или выполнить JS в шаблоне верхнего или нижнего колонтитула с помощью printToPDF протокола Chrome DevTools - PullRequest
0 голосов
/ 10 октября 2018

Я использую Headless Chrome для распечатки файлов PDF с использованием метода printToPDF CDP.Если мы установим для параметра displayHeaderFooter значение true, то мы можем установить определенные верхний и нижний колонтитулы страницы, используя параметры headerTemplate и footerTemplate.Протокол предоставляет некоторые HTML-классы для отображения некоторой информации, такие как: date, title, url, pageNumber, totalPages.

Например, мы можем установить footerTemplate в<span class="pageNumber"></span> для отображения номера текущей страницы в нижнем колонтитуле.Нам также нужно добавить стиль, чтобы отобразить его правильно.Настройки заголовка и нижнего колонтитула по умолчанию можно найти здесь , а компонент визуализации C ++ - здесь .

Я хотел бы изменить отображаемые значения pageNumber.Моя цель - подсчитать количество страниц по заданному номеру.

Примечание к документации API Puppeteer о том, что headerTemplate и footerTemplate разметка имеют следующие ограничения:

  1. Теги скриптов внутри шаблонов не оцениваются.
  2. Стили страниц не видны внутри шаблонов.

A Комментарий GitHub обеспечивает следующее:

<div style="font-size: 10px;">
  <div id="test">header test</div>
  <img src='http://www.chromium.org/_/rsrc/1438879449147/config/customLogo.gif?revision=3' onload='document.getElementById("test").style.color = "green";this.parentNode.removeChild(this);'/>
</div>

В нем говорится, что если мы используем атрибут onload для тега img, то мы можем запустить JavaScript в шаблонах.Однако я не смог воспроизвести результат, который показан на снимке экрана под фрагментом кода.

Например, следующий JavaScript может считать страницы от 10:

<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="tmpimg" 
onload="var x = document.getElementById('pn').innerHTML; var y = 10; document.getElementById('pn').innerHTML = parseInt(x) + y; this.parentNode.removeChild(this);"/>
<span id="pn" class="pageNumber"></span>

Но, к сожалению, этот скрипт не изменяет нумерацию страниц, и я понятия не имею, как решить эту проблему.Я также пытался использовать чистые CSS-решения, но безуспешно.

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

...