Подтвердить что ты не робот

Phantomjs соответствует содержимому страницы формата А4

Я хочу преобразовать HTML-страницу в PDF-формат A4.

page.paperSize = {
  format: 'A4',
  orientation: 'portrait',
  border: '1cm'
};

Есть ли способ масштабирования веб-сайта, чтобы он соответствовал ширине A4?

Если у меня есть следующий HTML:

<div style="width:1500px; text-align:right;">
  right 1500px
</div>

Правый конец div падает со страницы.

Я играл со свойством viewportSize:

page.viewportSize = {
  width: 480,
  height: 800
};

Я бы ожидал, что большая ширина окна просмотра приведет к большей части страницы, отображаемой в PDF.

page.zoom

Также не имеет желаемого эффекта.

PDF файлы - это отчеты. Для профессионального вида они должны быть A4, а не произвольным размером.

Или phantomjs неправильный инструмент для моей проблемы?

Я использую phantomjs версии 1.9.7 на Ubuntu 12.04.4.


Edit:

Кажется, здесь есть три разных измерения:

  • vieportSize, который является размером, который используется для рендеринга, как указано в документах
  • paperSize, который представляет собой размер полученного PDF-документа.
  • а затем размер экрана. phantomjs всегда соответствует ширине одного экрана по размеру бумаги. Размер экрана моей версии phantomjs составляет 1024 x 768 пикселей. Если порт представления больше размера экрана, то все, что находится за пределами 1024 пикселей, не отображается.

Я еще не нашел способ изменить размер экрана.

Я нашел это путем рендеринга http://www.whatismyscreenresolution.com/ в PDF.

4b9b3361

Ответ 1

Одним из решений является создание элемента, который точно такого же размера, как A4, и размещения в нем вашего контента. Это работало на моей машине:

.page{
    position:relative;
    border: 0px;
    width:calc(210mm * 1.25);
    height:calc(297mm * 1.25);
    padding:0
}

Обратите внимание, что я использую коэффициент масштабирования 1,25. Это связано с этой проблемой.