69

wkhtmltopdfを使用して HTML ファイルを PDF 形式に変換しています。驚くほど良い結果が得られ、WebKit とまったく同じように PDF がレンダリングされます。

私はGoogle Web Fontsを使用して、ユーザーが編集したドキュメントの外観をカスタマイズできるようにし、いくつかのフォントから選択できるようにしています。ブラウザでも完璧に動作します。

問題は、そのような HTML ファイルを wkhtmltopdf で PDF に変換するときに、Google フォントが機能しないことです。他の人も同じ問題を抱えていると読みました。

誰でもこれを修正するのを手伝ってもらえますか?

EDIT : CSS で @font-face を直接宣言しても機能しません。

4

9 に答える 9

41

簡単な解決策: フォントを Base64 でエンコードし、CSS に埋め込みます。

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

FontSquirrel は、 Webfont Generatorの高度なオプションを使用してこれを行うことができます。Google およびその他のフォントは、このツールでエンコードできます。

私はこのソリューションを wkhtmltopdf で動作するpdfkitとで使用したので、これはネイティブでも動作するはずです。wicked_pdfwkhtmltopdf

于 2013-04-25T00:27:58.933 に答える
11

表記法が機能することをテストしました@import

<style>
@import 'https://fonts.googleapis.com/css?family=Montserrat';
</style>

私はdjango-wkhtmltopdfバージョン2.0.3を使用しています

更新: django-wkhtmltopdf 3.3.0 で引き続き動作

于 2016-08-26T08:17:04.940 に答える
3

私はこれに約2日間苦労しています.上記の答えのどれもうまくいかない場合の私のアドバイス:

Web サーバーをホストするマシンにフォント (ttf) をインストールし、一般的なフォントの場合と同様に、css でそれを要求するだけです。

body{
    font-family: 'Lato';
}

これで、 wkhtmltopdfにフォントを含めることができるはずです

于 2016-05-16T21:59:36.340 に答える
2

この作業を(ローカルから)取得するために、膨大な数のバリエーションを試したに違いありません。WKHtmlToPdf を介して Open Sans Condensed を PDF に埋め込もうとしています。

Open Sans Condensed ttf を google から直接ダウンロードしてインストールすることが重要だと思います。インストール後に他のサービスへのアクセスを許可するために再起動することも重要です。私は元々 font-squirrel から ttf をダウンロードしましたが、condensed は windows/fonts で "Open Sans" としてリストされていましたが、これは間違っていますlocal('Open Sans Cond Light')。 .

前に述べたように、ストレッチとウェイトを明示する必要があるため、これが私にとってうまくいったことです:

    @font-face { 
     font-family: 'Open Sans'; 
     font-style: normal; 
     font-weight: 400; 
     src: local('Open Sans');
    }

    @font-face { 
     font-family: 'Open Sans Condensed'; 
     font-stretch:condensed; 
     font-style: normal; 
     font-weight: 300; 
     src: local('Open Sans Condensed Light');
    }

@@font-face { font-family: 'Open Sans Condensed Bold'; font-stretch:condensed; font-style: normal; font-weight: 700; src: local('Open Sans Condensed'), local('Open Sans Condensed Bold');}
于 2013-05-31T09:05:17.423 に答える
1

印刷スタイルシートで印刷に使用するフォントを宣言していないことを確認してください。

于 2011-07-17T04:13:00.413 に答える