4

いくつかの Unicode 文字を含む HTML があり、「UTF-8」でディスクに保存されています。less を使用して表示できます。すべての文字が適切に表示されます。

<h1>什么是Action?</h1>
<p>Play程序接收到的大部分请求,都是由&lt;code>Action</code>来处理的。

しかし、「wkhtmltopdf」を使用して PDF に変換すると、壊れた文字が表示されます。

壊れたユニコード

私のコマンドは次のとおりです。

wkhtmltopdf --encoding utf-8 book.html book.pdf

これを修正する方法は?

4

4 に答える 4

13

最後に、理由を見つけました。ubuntu サーバーに Unicode フォントがありません。

ローカルの ubuntu からサーバーに TrueType フォントをいくつかアップロードすると、すべて正常に動作します。

freewind@freewind:/usr/share/fonts$ cd truetype/
freewind@freewind:/usr/share/fonts/truetype$ ls
arphic             ttf-dejavu               ttf-lao
freefont           ttf-devanagari-fonts     ttf-liberation
kochi              ttf-gujarati-fonts       ttf-malayalam-fonts
msttcorefonts      ttf-indic-fonts-core     ttf-oriya-fonts
openoffice         ttf-japanese-gothic.ttf  ttf-punjabi-fonts
sazanami           ttf-japanese-mincho.ttf  ttf-tamil-fonts
takao              ttf-kacst-one            ttf-telugu-fonts
thai               ttf-kannada-fonts        unfonts
ttf-bengali-fonts  ttf-khmeros-core         wqy

それらをすべてアップロードするだけで、この問題は解決しますが、どのフォントがキーであるかはわかりません。

于 2012-07-12T10:17:30.740 に答える
3

私もこの問題を抱えていました。結局のところ、HTML ファイルにmetaは間違った を設定するタグが含まれていましたcharset。たとえば、HTML ファイルには

<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<style>

utf-8次のように、代わりに文字セットの代わりに切り替えると、問題は解決しました。

<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<style>
于 2018-08-28T04:57:42.113 に答える
0

MS Windows マシンを使用している場合 (上記の回答は X Windows フォント サーバー用です)、次の方法でうまくいきました。

  1. wkhtmltoimage で YaHei または SimSun を使用できます。

  2. 中国語の文字を使用するコンテンツを、スタイルの新しい font-family に明示的に設定します。

    .smsnotification_chinese {
        font-size: 30px;    
        font-family: "Microsoft Yahei", SimSun;
    }
    

    これは、在庫の米国 Windows マシンで動作します。他の人のためにここで説明されているフォントフォールバックのより堅牢な説明があります: Chinese Standard Web Fonts: A Guide to CSS Font Family Declarations for Web Design in Simplified Chinese .

  3. 注: GDI+ サンドボックスの制限により、wkhtmltoimage バイナリは Azure ワーカー マシンでは機能しません。独自の Web サービス ラッパーを作成するか、この無料のラッパーを使用することで、これを回避できます: Convert HTML to PDF in .Net on Azure

于 2016-05-13T02:19:51.287 に答える
0

wkhtmltopdf-i386 book.html book.pdf を試してください

于 2012-07-12T09:23:50.980 に答える