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.
Ответы
Ответ 1
Одним из решений является создание элемента, который точно такого же размера, как A4, и размещения в нем вашего контента. Это работало на моей машине:
.page{
position:relative;
border: 0px;
width:calc(210mm * 1.25);
height:calc(297mm * 1.25);
padding:0
}
Обратите внимание, что я использую коэффициент масштабирования 1,25. Это связано с этой проблемой.