web-dev-qa-db-ja.com

wkhtmltopdf-エンコーディングの問題

Wkhtmltopdfを使用してhtmlページをpdfにエクスポートしていますが、チェコ語の文字に問題があるようです... html全体を変数にロードしてから、エンコーディングを変更して、次のようにwkhtmltopdfを実行します。

$html = ob_get_clean();
$html = iconv("UTF-8","Windows-1250", $html);
file_put_contents('../export.php', $html);

$commandString = WKHTML_LIB.'http://www.estiroad.com/export.php sestava.pdf';
exec($commandString);

.htmlファイルには正しいエンコーディングがありますが、-encoding windows-1250パラメータをコマンド文字列に設定しても、機能しません...アイデアをありがとう...

編集:私は問題を解決しました!キャッチは、ページの冒頭で定義した定数WKHTML_LIBにありました。

define('WKHTML_LIB', "../wkhtmltopdf/wkhtmltopdf-AMD64");

Exec()へのパスを直接記述しました。コマンドを実行すると、フラグを使用しても機能します。このような些細なことでご迷惑をおかけして申し訳ありません... $ commandString行は次のようになります。

$commandString = '"../wkhtmltopdf/wkhtmltopdf-AMD64" --print-media-type --page-size A4 -R     50 --encoding windows-1250 --header-html header.html --margin-top 10mm --margin-bottom 10mm --margin-left 10mm --margin-right 10mm http://www.estiroad.com/export.php sestava.pdf';
17
Michal S

問題を解決しました!キャッチは、ページの冒頭で定義した定数WKHTML_LIBにありました。

define('WKHTML_LIB', "../wkhtmltopdf/wkhtmltopdf-AMD64");

Exec()へのパスを直接記述しました。コマンドを実行すると、フラグを使用しても機能します。このような些細なことでご迷惑をおかけして申し訳ありません... $ commandString行は次のようになります。

$commandString = '"../wkhtmltopdf/wkhtmltopdf-AMD64" --print-media-type --page-size A4 -R     50 --encoding windows-1250 --header-html header.html --margin-top 10mm --margin-bottom 10mm --margin-left 10mm --margin-right 10mm http://www.estiroad.com/export.php sestava.pdf';
5
Michal S

今後の参考のために:

私はドイツのウムラウトでも同じ問題を抱えていました。

追加するとすぐに

<meta charset="UTF-8" />

htmlページに問題は解決されました。

もちろん、それはあなたのページがutf-8として提供されていることを前提としています。

53
Marcel Burkhard

ちょうど今、私はあなたが提供したそれらのキャラクターでテストをしました、そしてそれらは私のためにうまく働きます。 Win7、wkhtmltopdf 0.11.0rc2。表紙、目次、ブックマーク、コンテンツ、ヘッダーで機能します。また、韓国語と中国語の文字でテストされており、それらも機能します。

(ファイルの場所が削除された)を使用して生成されたPDF --print-media-type --page-size A5 --header-html header.html --footer-html footer.html --margin-bottom 10mm --margin-top 10mm --margin-left 10mm --margin-right 10mm cover cover.html toc --xsl-style-sheet tocfile.xsl temp.html temp.pdf

temp.htmlは非常に無効なXHTMLであり、最初の行は<?xml version="1.0" encoding="iso-8859-1"?>。 temp.htmlファイルはUTF-8を使用してC#でディスクに書き込まれ、機能します。可能な限りUTF-8を使用することをお勧めします。

Screenshot of generated PDF

0
Nenotlep

以前、wkhtmltopdfで同様の問題が発生し、漢字が正しくレンダリングされませんでした。適切な中国語フォントをインストールすることで問題を解決しました。

万が一、文字を正しくレンダリングするためにチェコ語関連のフォントをインストールする必要がありますか?私はチェコ語の文字/フォントに精通していないので、これが当てはまるかどうかわかりません。お役に立てれば。

0
Leon Chung