Я использую 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
разметка имеют следующие ограничения:
- Теги скриптов внутри шаблонов не оцениваются.
- Стили страниц не видны внутри шаблонов.
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-решения, но безуспешно.
Любые идеи могут помочь решить эту проблему.