Я пытаюсь преобразовать html-файл в PDF через PhantomJS и не могу понять, как избежать проблем с масштабированием dpi. Просто имея такой простой элемент, как <div style=" display:block; background-color:red; width:96px; "> text </div>
, его ширина уменьшилась до 77 пикселей. Значения моих viewPort
или paperSize
, похоже, не меняют этого. Я могу настроить zoomFactor
на 1,25, что было предложено в другом месте, это масштабирует примерно до предполагаемой ширины, но искажает некоторые элементы на странице.
У меня есть диаграмма svg, сгенерированная HighCharts, которая настроена на заполнение 100% ширины, я также пробовал width: 210mm
, но она будет уменьшена вместо того, чтобы соответствовать ширине paperSize 210 мм. Я знаю, что A4 с разрешением 96 точек на дюйм должен быть 794 x 1120 пикселей, а через средство просмотра PDF при 100% увеличении это измерения в пикселях (насколько я понимаю, PDF-файлы в окнах отображаются с разрешением 96 точек на дюйм). Я смог заставить свой div HighCharts с width:100%
отображать, как предполагалось, в соответствии с шириной PDF-файлов, взяв эти размеры в пикселях и умножив их на 1,25, 992 x 1400 значений для viewPort
с paperSize
, установленным на A4 портрет и без полей. К сожалению, это не регулирует остальную часть контента, который уменьшается в масштабе.
Еще один вариант заключался в том, чтобы избежать формата бумаги A4 и предоставить те же значения пикселей, что и для viewPort, они также уменьшены для соответствующего документа, хотя это было предназначено для службы отчетов, где ожидался формат A4 PDF ... Поскольку ни один из материалов не является растровым на основе есть ли способ масштабировать это, чтобы заполнить / соответствовать размерам A4 PDF? В идеале браузерная и pdf-версии должны выглядеть одинаково по размеру на одном и том же компьютере (PhantomJS используется через приложение Atom-Shell), возможно, это не согласованный опыт, который можно предоставить пользователям?