LoginSignup
22
36

More than 5 years have passed since last update.

PHPでHTMLをPDF出力するライブラリについて調べてみた

Posted at

やりたい事とポイント

  • PHPでPDF出力を出力する。(そのまま)
  • いちいちレイアウトを考えたくないのでHTMLをそのままPDFしたい。
  • テンプレートのPDFなどは使わないシンプルな帳票で良い。
  • composerでインストールできるphpのライブラリだけでやりたい。

環境

Mac OS X El Capitan 10.11.4
PHP 5.6.24
CodeIgniter 2.2.0(古い。が、他のFWでも参考になるかと思います)

PDF出力ライブラリの選定(こんなにするつもりじゃなかった)

mPDF

ドキュメントも豊富で主流のようなのだが後述の問題があった為、不採用。

FPDF

HTMLに対応しておらず、項目の座標をいちいち指定しないといないので却下。
mPDFと同様の問題もあったので不採用。

html2pdf

情報が少ない上に検索すると同名のサービスもヒットするのでげんなりして不採用。
名前はシンプル過ぎてもいけない事を学んだ。

wkhtmltopdf(+snappy)

google製で性能・信頼感はあるのだがphpのライブラリだけでやりたいので却下。

TCPDF

結果的にはTCPDFに落ちつた。

PDF出力時に起きた問題

当初、mPDFでPDFファイルを作成したところPDFのダウンロードまでは出来るのだが
ファイルをChromeでそのまま開こうとすると
PDF ドキュメントを読み込むことができませんでした
のエラーが発生して開く事ができない。
Adobe Readerで開こうとすると

「hoge.pdf」を開けませんでした。ファイル形式がサポートされていないか、またはファイルが破損している可能性があります (例えば、電子メールの添付ファイルとして送信され、正しくデコードされなかった場合などが考えられます)。
Adobe PDF 文書を作成するには、作成元アプリケーションでファイルを Adobe PDF に印刷してください。

と激しく怒られる。
同じファイルをmacのプレビューやfirefoxで開くと普通に開ける。

調査

  • Adobe ReaderのVersionが古い? → 最新版にしても現象変わらず。
  • PDFしたHTMLの問題? → 適当な文字列だけのHTMLにしても現象変わらず。
  • mPDFに何かオプションがある? → マニュアルを読んでもそれらしい設定はなさそう。
  • 同様の事象をgoogle先生にお伺いしても「そんなのお前だけだよ」と言われる。

結局、原因が分からずmPDFが悪いに違いない!と決め付けPDF出力ライブラリの選定をやり直すハメになった。

長くなってしまったのでTCPDFを使ったPDF出力の方法は記事を分けます。

22
36
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
36