質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

1回答

2260閲覧

htmlをpdfで出力しようとしたときに、アルファベットが記号に文字化けする。

carotene4035

総合スコア31

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

0クリップ

投稿2017/07/30 02:09

編集2017/07/30 02:10

概要

帳票をpdfで出力するシステムを作っております。

htmlで作成した文書をpdfとして出力するために、
googleのwkhtmltopdfというツールを使用しております。

また、wkhtmltopdfを使用する際はphpから以下のラッパークラスを用いて呼び出しております。
mikehaertl/phpwkhtmltopdf

これらを用いてpdfを出力したところ、以下のようにアルファベットだけ文字化けしました。

こちらの文字化けを解消するにはどうしたらよろしいでしょうか。

教えていただければ幸いです。

イメージ説明

↑ pdfというアルファベットが文字化けしている。

環境

CentOS release 6.8
php 5.6.23
wkhtmltopdf 0.12.4
mikehaertl/phpwkhtmltopdf 2.2.1

実際に行った手順

  • wkhtmltopdfの導入

bash

1$ yum install -y libXrender libXext 2$ cd /usr/local/bin 3$ wget http://download.gna.org/wkhtmltopdf/0.12/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz 4$ xz -dv wkhtmltox-0.12.4_linux-generic-amd64.tar.xz 5$ tar -xf wkhtmltox-0.12.4_linux-generic-amd64.tar
  • 日本語フォントのインストール

bash

1$ wget http://dl.ipafont.ipa.go.jp/IPAexfont/IPAexfont00301.zip 2$ unzip IPAexfont00301.zip 3$ mv IPAexfont00301 /usr/share/fonts
  • pdf化するスクリプトを作成

php

1require './vendor/autoload.php'; 2 3$html = <<<EOF 4<!DOCTYPE html> 5<html> 6 <style> 7 body { 8 padding: 7px; 9 background-color: black; 10 } 11 .red { 12 color: red; 13 font-size: 50px; 14 } 15 .opacity { 16 opacity: 0.3; 17 } 18 </style> 19 20 <body> 21 <div class="red"> 22 <p>PDF化してください!</p> 23 <p class="opacity">何でもしますから!</p> 24 </div> 25 </body> 26</html> 27EOF; 28 29use mikehaertl\wkhtmlto\Pdf; 30 31 32$pdf = new Pdf([ 33 34 // バイナリの位置とエンコード形式 35 'binary' => '/usr/local/bin/wkhtmltox/bin/wkhtmltopdf', 36 'encoding' => 'utf-8', 37 38 // 以下の指定があるとPDFをページ端まで利用できる 39 'margin-top' => 0, 40 'margin-right' => 0, 41 'margin-bottom' => 0, 42 'margin-left' => 0, 43 'no-outline', 44 45]); 46 47// ページを追加 48$pdf->addPage($html); 49 50// ブラウザにPDFを表示 51$pdf->send();

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2017/07/31 05:33

他の半角英数はどうですか?「PDF」と全角にするとどうなりますか?
carotene4035

2017/07/31 07:37

他の半角英字も文字化けします。半角数字も文字化けしますね。。。全角のPDFは文字化けしませんでした。
coba-coba

2017/08/01 07:23

フォントはきちんとインストールされているのでしょうか。 fc-listを実行するとIPAのフォントはリストに表示されますか?fc-cacheは実行しましたか?
carotene4035

2017/08/01 07:55

ありがとうございます。 fc-listを実行してみたところ、IPAexGothic,IPAexゴシック:style=Regular, IPAexMincho,IPAex明朝:style=Regularが表示されておりました。また、fc-cacheを実行してみたところ、半角文字の文字化けは変わらずでした。
guest

回答1

0

phpの$pdfを呼ぶところで、こんなふうに変更してみたらどうなるでしょうか?

変更前:

php

1$pdf = new Pdf([ 2 3 // バイナリの位置とエンコード形式 4 'binary' => '/usr/local/bin/wkhtmltox/bin/wkhtmltopdf', 5 'encoding' => 'utf-8',

変更後:

php

1$pdf = new Pdf([ 2 3 // バイナリの位置とエンコード形式 4 'binary' => '/usr/local/bin/wkhtmltox/bin/wkhtmltopdf', 5 'commandOptions' => array( 6 'useExec' => true, // エラーメッセージが出てこない場合のための記述 7 'procEnv' => array( 8 // 出力のロケールチェック 9 'LANG' => 'ja_JP.utf-8', 10 ), 11 ),

PHP WkHtmlToPdf | README.md

投稿2017/08/07 14:12

fiwa

総合スコア1192

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

landmine

2017/11/20 07:56 編集

同じ現象だったのですが、'commandOptions' のuseExec記載せず、 htmlに<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> を追加したところ文字化けしなくなりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問