wkhtmltopdf - 相同的配置不同的输出

Gac*_*cek 6 wkhtmltopdf

我在项目中通过snappy使用wkhtmltopdf.在我的本地计算机上输出正确:https: //www.dropbox.com/s/ml9cp2pa6d8wja5/Zaznaczenie_100.png?dl = 0

但是当我将项目部署到服务器时,pdf看起来非常不同,可能视口的宽度不同:https: //www.dropbox.com/s/8g0c29bzaxltyb9/170311_123139_4775.jpg?dl = 0

两个系统使用完全相同的配置来生成pdf.

我的问题是:

  • 如何检查特定机器上wkhtmltopdf的默认配置?
  • 如何更改视口大小,以便我的输出在不同的机器上完全相同?

我手动设置输出页面的宽度和高度(分别为21厘米和50厘米).我尝试了不同的DPI参数组合,但似乎没有效果.

我使用的是PHP wkhtmltpdf包装- 活泼的 -但我检查,我在控制台中相同的输出,所以这个问题是wkhtmltopdf产权相关,不活泼.

Can*_*rop 0

PDF 输出中看起来不同的主要内容之一是字体。wkhtmltopdf 要求在操作系统上安装字体,就像浏览器要求安装字体一样。字体间距和大小的差异可能会影响页面的布局。您应该首先查看您尝试在源文件中使用哪些字体并将其安装在您的服务器上。一个好的开始是从这里安装 Microsoft 的核心字体,或者从您的服务器发行版的存储库中安装。

解决此问题的另一种方法是使用@font-face源文件样式表中的指令链接到 URL 中的字体,而无需将它们安装在服务器上:

@font-face {
    font-family: 'Roboto';
    font-style: normal;
    font-weight: 400;
    src: local('Roboto'), local('Roboto-Regular'), url(https://fonts.gstatic.com/s/roboto/v15/CWB0XYA8bzo0kSThX0UTuA.woff2) format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
}
Run Code Online (Sandbox Code Playgroud)

对于 Google 的网络字体,您可以导入其样式表:

<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet" />
Run Code Online (Sandbox Code Playgroud)

另一件需要检查的事情是您的工作站和服务器上的 wkhtmltopdf 版本。运行wkhtmltopdf --version会告诉您当前安装的版本。您的服务器可能运行的是过时版本的 wkhtmltopdf。安装具有您需要的功能的最新版本 wkhtmltopdf 的最简单方法是从这里,您可以在其中下载任何发行版的静态链接的 Linux 二进制文件。

最后要尝试的一件事是使用不同的--margin-top--margin-right--margin-bottom--margin-left参数。还有一个名为的标志--viewport-size可能有助于提供更好的结果。

wkhtmltopdf --viewport-size 1024x768 page.html output.pdf
Run Code Online (Sandbox Code Playgroud)

但是,如果您在工作站和服务器上使用相同版本的 wkhtmltopdf,这些配置选项应该不会产生影响,正如您所说的,您已经在两者上使用相同的配置。