我正在使用 wkhtmltopdf 生成一个用于打印 HTML 代码的 .pdf 文件。我的问题是,当我生成 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 版本中的一个问题。
有人知道如何解决这个问题吗?
最佳答案
在对这个应用程序进行大量调整和改进以使其像素完美符合 HTML 之后,我发现了多种有助于解决此问题的方法。我希望你们中的一些人可以使用它。
使用
white-space: nowrap;
.出于某种原因,在 PDF 上,我在 HTML 中没有任何换行符的文本上出现了换行符。我对此做了很多测试,但找不到一个好的模式来重现这个问题,但似乎是在 PDF 中,它认为 HTML 中的 div 宽度较小,然后将内容向下推到第二排。所以我通过使用 white-space: nowrap; 解决了这个问题
显然,PDF 和 HTML 具有完全相同的 CSS 样式很重要。但要确保其他东西,如
<meta name="viewport">
是相同的。
关于php - wkhtmltopdf - 元素不保持原始位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22191733/