wkhtmltopdf - 元素不保留原始位置

时间:2014-03-05 07:53:42

标签: php css wkhtmltopdf

我正在使用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版本中的一个问题。

任何人对如何解决这个问题都有任何想法?

2 个答案:

答案 0 :(得分:0)

经过大量的调整并改进了这个应用程序以使其成为HTML的完美像素,我发现了多个有助于解决这个问题的东西。我希望你们中的一些人可以使用它。

  1. 使用white-space: nowrap;。出于某种原因,我在PDF上得到了在HTML中没有任何换行符的文本的换行符。我做了很多测试,我找不到一个好的模式来重新创建问题,但似乎在PDF中,它认为div在HTML中不那么宽,然后将内容推送到第二排。所以我通过使用white-space解决了这个问题:nowrap;

  2. 显然,您想要制作的PDF和HTML具有完全相同的CSS样式非常重要。但请确保<meta name="viewport">等其他内容相同。

答案 1 :(得分:0)

您可以尝试$snappy->setOption('viewport-size', 'WIDTHxHEIGHT')