Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

やりたい事とポイント

  • 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出力の方法は記事を分けます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away