我正在使用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版本中的一个问题。
任何人对如何解决这个问题都有任何想法?
答案 0 :(得分:0)
经过大量的调整并改进了这个应用程序以使其成为HTML的完美像素,我发现了多个有助于解决这个问题的东西。我希望你们中的一些人可以使用它。
使用white-space: nowrap;
。出于某种原因,我在PDF上得到了在HTML中没有任何换行符的文本的换行符。我做了很多测试,我找不到一个好的模式来重新创建问题,但似乎在PDF中,它认为div在HTML中不那么宽,然后将内容推送到第二排。所以我通过使用white-space解决了这个问题:nowrap;
显然,您想要制作的PDF和HTML具有完全相同的CSS样式非常重要。但请确保<meta name="viewport">
等其他内容相同。
答案 1 :(得分:0)
您可以尝试$snappy->setOption('viewport-size', 'WIDTHxHEIGHT')
,