Как получить ширину и высоту страницы в пикселях в JavaScript при использовании wkhtmltopdf - PullRequest
1 голос
/ 26 октября 2019

Я делаю следующее для создания PDF из HTML:

wkhtmltopdf --grayscale --page-height 10in --page-width 8in index.html index.pdf

У меня есть такая структура HTML:

<html>
  <head>
    <meta charset="utf-8">
    <style>
      .page {
        page-break-after: always;
        height: 100%;
      }
    </style>
  </head>
  <body>
    <div class='page'>asdf</div>
    <div class='page'>hkl</div>
    <script>
      window.addEventListener('load', function(){
        var p = document.querySelector('.page')

        var W = p.offsetWidth
        var H = p.offsetHeight
        
        document.body.innerHTML = 'W:' + W + 'H:' + H
      })
    </script>
  </body>
</html>

По сути, я пытаюсь найти способ измерения размеров «страницы» (а не тела или какого-либо обычного элемента). Итак, я добавил 2 страницы, чтобы убедиться, что свойство CSS page-break-after, как мы надеемся, вступит в силу. Окончательный результат (если вы закомментируете часть document.body.innerHTML = ...) выглядит так, как будто он разделен на страницы. Но когда я регистрирую его, как показано в приведенном выше примере (супер хакер, не знаю, как console.log в wkhtmltopdf), он говорит:

W:0 H:0

Почему он так говорит? Как я могу получить измерения общей "страницы"? Я хотел бы получить размеры страницы, чтобы я мог рассчитать количество символов, которые могут уместиться на строке с учетом размера шрифта, или количество строк, которые могут уместиться на странице с учетом высоты строки. Но я не могу сделать это, не зная, как получить размеры страницы.

...