使用wkhtmltopdf从HTML生成Google Web字体和PDF

Mat*_*dic 58 html css wkhtmltopdf google-font-api

我使用wkhtmltopdf转换PDF格式的HTML文件; 它给出了令人惊讶的好结果,完全像WebKit那样呈现PDF.

我使用Google Web Fonts让用户可以自定义他们编辑的文档的外观,使他们可以选择几种字体.它也可以在浏览器中完美运行.

问题是,在使用wkhtmltopdf将此类HTML文件转换为PDF时,我无法使用Google字体.我读过其他人有同样的问题.

有人可以帮我解决这个问题吗?

编辑:直接在CSS中声明@ font-face也不起作用.

Sha*_*zam 45

要通过wkhtmltopdf尽量避免使用woff字体来将HTML转换为PDF .使用带编码的truetype格式.Google Web Fontsbase64

最近,我尝试使用Google网络字体中的Google网络字体.在浏览器中它正确显示但在将HTML转换为PDF后不显示.

在广泛搜索网页后,我终于找到了将字体编码为base64格式的工具,并且还获得了CSS @font-face.

这里阅读解决方案.

  • +1.注意:如链接解决方案页面上的评论中所述:它似乎不适用于OS X(10.9),但在linux下工作. (2认同)
  • 你能更新一下这个链接吗?自上个月以来,页面不再存在 (2认同)

Arm*_*n H 30

一个简单的解决方案:Base64编码您的字体并将其嵌入CSS中:

@font-face {
    font-family: 'OpenSans';
    src: url(data:font/truetype;charset=utf-8;base64,AAEAAAATAQA...
}
Run Code Online (Sandbox Code Playgroud)

FontSquirrel可以通过Webfont Generator的高级选项为您完成此任务 ; 可以使用此工具对 Google和其他字体进行编码.

我已经使用了这个解决方案pdfkitwicked_pdf,通过wkhtmltopdf工作,所以我认为这应该适用于本机wkhtmltopdf.

  • 我可以确认这对我有用,但是,我必须使用wkhtmltopdf的v0.10.0-rc2作为OS X.在这方面,最新版本对我不起作用. (3认同)

Jos*_*son 13

我有同样的问题并通过下载字体并使用此font-face声明从我的Web服务器中的本地文件运行它来解决它:

@font-face {
    font-family: 'PT Sans';
    src: url( '/public/inc/fonts/PTS55F-webfont.eot');
    src: url( '/public/inc/fonts/PTS55F-webfont.eot?#iefix') format('embedded-opentype'),
         url( '/public/inc/fonts/PTS55F-webfont.woff') format('woff'),
         url( '/public/inc/fonts/PTS55F-webfont.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
}
Run Code Online (Sandbox Code Playgroud)

我能够在Font Squirrel上找到这个字体,但你的里程可能会有所不同.

我认为谷歌的字体会发生什么,它只是试图加载它认为这个浏览器想要的格式,这对于WebKit来说是woff(我相信).但wkhtmltopdf无法在PDF中嵌入woff字体,因此默认为sans-serif.通过声明所有这些,包含TrueType字体,这是PDF实际使用的.

此外,您需要在任何font-family CSS定义中定义您想要用作第一个字体的字体,否则wkhtmltopdf将忽略它.


gui*_*val 6

我刚刚使用@import符号工作测试过:

<style>
@import 'https://fonts.googleapis.com/css?family=Montserrat';
</style>
Run Code Online (Sandbox Code Playgroud)

我正在使用django-wkhtmltopdf 2.0.3版