我正在使用wkhtmltopdf生成一个.pdf文件,用于打印HTML代码 . 我的问题是,当我生成pdf时,HTML元素会被移动并且不会保持其原始位置 .
我生成pdf的代码是:
$address = 'http://www.example.com/sendpdf/' . $card . '/';
$snappy = new Pdf('/usr/bin/wkhtmltopdf');
$snappy->setOption('lowquality', null);
$snappy->setOption('dpi', 100);
$snappy->setOption('disable-smart-shrinking', true);
$snappy->setOption('page-width', 127);
$snappy->setOption('page-height', 178);
$snappy->setOption('margin-left', 0);
$snappy->setOption('margin-top', 0);
$snappy->setOption('margin-right', 0);
$snappy->setOption('margin-bottom', 0);
$snappy->setOption('stop-slow-scripts', null);
$snappy->setOption('enable-javascript', true);
$pdf_content = array( $card, $snappy->getOutput($address) );
我也试过用Firefox,Safari和Chrome查看HTML版本 . 在所有版本中,元素似乎都正确定位 . 它似乎只是PDF版本中的一个问题 .
任何人有任何想法如何解决这个问题?
1 回答
经过大量的调整和改进这个应用程序,使其像素完美的HTML,我发现了多个有助于解决这个问题的东西 . 我希望你们中的一些人可以使用它 .
使用
white-space: nowrap;
. 出于某种原因,我在PDF上得到了在HTML中没有任何换行符的文本的换行符 . 我做了很多测试,我找不到一个好的模式来重新创建问题,但似乎在PDF中,它认为div在HTML中不那么宽,然后将内容推送到第二排 . 所以我通过使用white-space解决了这个问题:nowrap;显然,您想要制作的PDF和HTML具有完全相同的CSS样式非常重要 . 但请确保
<meta name="viewport">
等其他内容相同 .