Wkhtmltopdf似乎以不可预测的方式在PDF中嵌入字体

时间:2016-09-30 17:20:45

标签: css qt pdf fonts wkhtmltopdf

我开发了一个使用wkhtmltopdf生成PDF的小型引擎。

在我的PC(Fedora 24)上工作时,生成的PDF看起来没问题。在测试服务器(CentOS 7)上安装软件后,我发现生成的PDF略有不同。

我正在使用该工具的独立版(未通过软件包管理器安装)版本。更确切地说,我使用的是版本 wkhtmltopdf 0.12.3(带有补丁的qt)

经过一番调查后,我注意到我系统上生成的PDF包含以下字体:

PDF on Fedora

而在服务器上生成的PDF包含以下内容:

PDF on CentOS

在CSS中我将这些字体用于整个文档:

/* open-sans-300 - latin */
@font-face {
    font-family: 'Open-Sans-Light';
    font-style: normal;
    font-weight: 300;
    src: url('../fonts/open-sans-v13-latin-300.eot'); /* IE9 Compat Modes */
    src: local('Open Sans Light'), local('OpenSans-Light'),
    url('../fonts/open-sans-v13-latin-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
    url('../fonts/open-sans-v13-latin-300.woff2') format('woff2'), /* Super Modern Browsers */
    url('../fonts/open-sans-v13-latin-300.woff') format('woff'), /* Modern Browsers */
    url('../fonts/open-sans-v13-latin-300.ttf') format('truetype'), /* Safari, Android, iOS */
    url('../fonts/open-sans-v13-latin-300.svg#OpenSans') format('svg'); /* Legacy iOS */
}

/* open-sans-regular - latin */
@font-face {
    font-family: 'Open-Sans-Regular';
    font-style: normal;
    font-weight: 400;
    src: url('../fonts/open-sans-v13-latin-regular.eot'); /* IE9 Compat Modes */
    src: local('Open Sans'), local('OpenSans'),
    url('../fonts/open-sans-v13-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
    url('../fonts/open-sans-v13-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
    url('../fonts/open-sans-v13-latin-regular.woff') format('woff'), /* Modern Browsers */
    url('../fonts/open-sans-v13-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
    url('../fonts/open-sans-v13-latin-regular.svg#OpenSans') format('svg'); /* Legacy iOS */
}

/* open-sans-300italic - latin */
@font-face {
    font-family: 'Open-Sans-Light-Italic';
    font-style: italic;
    font-weight: 300;
    src: url('../fonts/open-sans-v13-latin-300italic.eot'); /* IE9 Compat Modes */
    src: local('Open Sans Light Italic'), local('OpenSansLight-Italic'),
    url('../fonts/open-sans-v13-latin-300italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
    url('../fonts/open-sans-v13-latin-300italic.woff2') format('woff2'), /* Super Modern Browsers */
    url('../fonts/open-sans-v13-latin-300italic.woff') format('woff'), /* Modern Browsers */
    url('../fonts/open-sans-v13-latin-300italic.ttf') format('truetype'), /* Safari, Android, iOS */
    url('../fonts/open-sans-v13-latin-300italic.svg#OpenSans') format('svg'); /* Legacy iOS */
}

/* open-sans-700 - latin */
@font-face {
    font-family: 'Open-Sans-Bold';
    font-style: normal;
    font-weight: 700;
    src: url('../fonts/open-sans-v13-latin-700.eot'); /* IE9 Compat Modes */
    src: local('Open Sans Bold'), local('OpenSans-Bold'),
    url('../fonts/open-sans-v13-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
    url('../fonts/open-sans-v13-latin-700.woff2') format('woff2'), /* Super Modern Browsers */
    url('../fonts/open-sans-v13-latin-700.woff') format('woff'), /* Modern Browsers */
    url('../fonts/open-sans-v13-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */
    url('../fonts/open-sans-v13-latin-700.svg#OpenSans') format('svg'); /* Legacy iOS */
}

那么为什么wkhtmltopdf会嵌入额外的字体?

如何确保wkhtmltopdf仅使用Open Sans并且无论我在哪个系统上运行该软件,我都可以获得相同的PDF?

现在它似乎随机挑选它在系统中找到的随机字体,除了我指定的字体:|

0 个答案:

没有答案