css 使用pdfkit和jinja在PDF中选择字体

1szpjjfi  于 2024-01-09  发布在  其他
关注(0)|答案(2)|浏览(154)

我很难在我的PDF文档中将字体设置为Open Sans。我使用Python创建两个带有jinja模板的html文件,然后将它们各自转换为PDF文件,然后将它们合并在一起。我所能说的是,有时这些PDF中的一个具有正确的字体,有时另一个,但从来没有在同一时间,尽管有相同的代码。我感到困惑的不一致太,因为它似乎不相关的变化,我做。我已经尝试下载字体风格。tff文件,以防错误是由于未能从整个互联网下载,但这并没有帮助。
这个问题似乎是在我的配置的html/css和在转换为PDF.当前的设置是这样的:

<head>
  <meta name="user-style-sheet" content="True" charset="utf-8" />
</head>

<style>
    /* @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400&display=swap'); */

    @font-face {
        font-family: 'Open Sans';
        src: url('/templates/shared/Open_Sans/static/OpenSans_Condensed-Light.ttf');
    }

    body {
        font-family: 'Open Sans';
    }

    p {
        font-family: 'Open Sans';
        font-size: medium;
    }

</style>

字符串
我错过了什么?

jdgnovmf

jdgnovmf1#

WkHTMLtoX已经退役(生命周期结束),因此没有更多的安全修复。所以你应该确保使用最新的。
最后一项安全措施是重新引入更严格的安全性,因此本地用户在本地加载字体时需要包含相关的文件开关。因此,本地命令将在Windows上:
第一个月


的数据
这允许从windows\fonts引用的字体或自定义本地.ttf字体都被允许。
下面的HTML加载字体显示了一个来自%CD%(下载后的当前目录)的示例和一个来自Windows字体目录的引用,以显示两种方法。

condensed intentionally to just show style lock 'n' load 

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Title of the document</title>

<style>
    @font-face { font-family: 'OpenSans'; font-style: normal; font-weight: normal; src: url("./OpenSans_SemiCondensed-Light.ttf") format("truetype"); }
    @font-face { font-family: 'Consolas';   font-style: normal; font-weight: normal; src: url("file:///c:/windows/fonts/consola.ttf") format("truetype"); }
    body { font-family: 'OpenSans'; font-weight: 800; }
    p { font-family: 'OpenSans'; font-style: italic; font-size: medium; font-weight: 200; }
   code, pre { font-family: 'Consolas'; font-size: medium; font-weight: 200; }
</style>

</head><body >
    Google fonts cannot generally be used in applications such as WkHtmltox even with a CORS policy etc.<br>

    <p>This approach will not work<br>style="font-family: OpenSans;"
    &LT;link rel="preconnect" href="https://fonts.googleapis.com"&gt;<br>
    &LT;link rel="preconnect" href="https://fonts.gstatic.com" crossorigin&gt;<br>
    &LT;link href="https://fonts.googleapis.com/css2?family=Open+Sans&display=swap" rel="stylesheet"&gt;<br>
<br></p>

What is needed is a local file TTF font as below and the --allow %cd% switch</br>

<code><pre>
    @font-face {
      font-family: 'OpenSans';
      font-style: normal;
      font-weight: normal;
      src: url("./OpenSans_SemiCondensed-Light.ttf") format("truetype");
    }
</pre></code>

Run with <br>
> wkhtmltopdf --allow "%cd%" in.htm out.pdf<br>
or to  --allow "C:\Windows\Fonts"<br>
wkhtmltopdf --allow "%cd%"  --enable-local-file-access in.htm out.pdf<br>

</body></html>

字符串

lrl1mhuk

lrl1mhuk2#

使用字体文件的绝对路径

相关问题