php - wkhtmltopdf - 元素不保持原始位置

标签 php css wkhtmltopdf

我正在使用 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 之后,我发现了多种有助于解决此问题的方法。我希望你们中的一些人可以使用它。

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

  2. 解决了这个问题
  3. 显然,PDF 和 HTML 具有完全相同的 CSS 样式很重要。但要确保其他东西,如 <meta name="viewport">是相同的。

关于php - wkhtmltopdf - 元素不保持原始位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22191733/

相关文章:

html - IOS 7 中的悬停链接中断

ruby-on-rails - Ruby on rails wkhtmltopdf css 样式表未在生产(linux)服务器上呈现

javascript - Wicked_pdf 逐页设置页脚高度或边距

php - 如何使用 phpunit 运行单个测试方法?

PHP - 如何修改深层嵌套的关联数组?

php - HTML 选择选项设置选中的默认回显获取值 php

javascript - wkhtmltopdf - 动态更改页边距而不覆盖内容

php - 需要建议来更改我的数据库设计

php - Laravel - 如何替换数据库中的字符串

javascript - 在我的案例中如何禁用表单提交