PHP

2022.8.1

【技術解説】PHPでPDF出力機能を実装するにはTCPDFがおすすめ!概要や使用方法、注意点を知る

  • facebook
  • twitter
  • はてなブックマーク
  • pocket

みなさんこんにちは。Wakka Inc.のベトナム拠点でテクニカルマネージャーを担当している鍋山です。

PHPのシステム開発を進めていく中で、「PHPで請求書や管理表をPDF出力したいが、どのようにすればいいのかわからない」という悩みで作業が止まってしまうエンジニアの方もいるのではないでしょうか。

WebアプリケーションからPDF出力する機会は少なくありません。

例えば、請求書を作成するサービスを構築する場合、必要事項をフォームに入力し、それをPDF形式でダウンロードできるようにする必要があります。そのほかにも、利用明細書やプレゼン資料などさまざまなものを挙げることができるでしょう。

PHPでPDF出力の機能を追加する際、TCPDFがおすすめです。今回は、TCPDFの基本概要と使用手順、注意点について解説しますので、興味のある方はぜひ参考にしてください。

TCPDFの基本概要

『TCPDF』とは、HTMLでPDF出力ができるようにしてくれる無料のオープンソースソフトウェアのことです。PHPクラスやライブラリといわれることもあります。外部ライブラリは必要なく、TCPDFをダウンロードしてファイルでインクルードすれば使用可能です。

“PHPでPDF出力するならTCPDF”といわれるほど、有名かつ人気のあるライブラリになります。2002年から開発されており、最新バージョンは2021年にリリースされたバージョン6.4.4です。TCPDFは認知度が高く、WebサイトからPDF出力したい機会は比較的多いため、覚えておくと便利なライブラリといえるでしょう。

TCPDFの使用手順

TCPの使用手順は、下記のように大きく2つにわけて解説します。

・ダウンロード
・実装

興味のある方は、ぜひ参考にしてください。

TCPDFのダウンロード方法

TCPDFは、GitHubの下記のURLからダウンロードすることができます。
https://github.com/tecnickcom/tcpdf

また、yumコマンドからダウンロードすることも可能です。
yum install php-tcpdf

yumでインストールすると/usr/share/php配下にダウンロードされます。そのため、ご自身の既存プロジェクトに移動させましょう。もし、/usr/share/php配下を確認しても見つからない場合、rpmコマンドで場所を確認してください。
rpm -gs php-tcpdf

TCPDFは、自身のプロジェクトの中に配置します。プロジェクトの中にlib等のファイルを作り、その中にコピーします。また、そのままプロジェクト配下に入れても問題ありません。今回のサンプルでは、下記のようにプロジェクト配下に配置しました。
project/tcpdf

TCPDFを実装しよう!

TCPDF実装の基本的な流れは、tcpdf.phpをインクルードし、TCPDFをインスタンス化、そして、各種設定を行い、最後にアウトプットするという流れです。それでは、具体的な実装手順について詳しく解説します。

1.tcpdfの読み込み

はじめに、tcpdf.phpを読み込みます。tcpdf.phpをインクルードする際は、正しいパス設定をしてください。今回のチュートリアルでは、同じ階層にtcpdf.phpがあるため、下記のようなパスになります。
require_once(‘tcpdf.php’);

2. TCPDFのインスタンス化

次は、TCPDFのインスタンス化です。
$pdf = new TCPDF($orientation,$unit,$format,$unicode,$encoding,$diskcache,$pdfa);

引数は全部で7つ指定することができます。指定しない場合は、すべて初期値です。

第1引数は、用紙の向きを設定します。縦にする場合はP、横にするときはLを入力してください。ちなみに、空欄に指定したときは、自動で方向が決められます。型はfloat、初期値は縦向きのPです。

第2引数では、測定単位を決めます。測定単位には、pt(ポイント)やmm、cm、in(インチ)の4種類から選択可能です。その中でも特にポイントには馴染みがありませんが、1ポイントあたり0.35mmに換算されます。タイポグラフィでは一般的な単位であり、印刷術の基本です。基本的にPDFを出力する際は、mmを指定します。そのため、初期値もmmです。

第3引数では、用紙サイズを設定します。用紙サイズとは、A4やB5というような縦と横の幅が決められた用紙のことです。型はstringで、初期値はA4となります。

第4引数は、ユニコードかどうかを決める部分です。初期値はtrueとなっています。

第5引数は、文字セットエンコーディングです。htmlをもとに戻すときに使われます。初期値は、UTF-8です。

第6引数は、非奨励機能になります。指定する必要がなく、初期値のfalseのままでいいです。

第7引数では、Aモードに設定するのかを決めます。基本的に初期値のfalseを設定しましょう。

サンプルでは、下記のように引数を設定しました。
$pdf = new TCPDF(‘P’, ‘mm’, ‘A4’,true, ‘UTF-8’,false,false);

3.新規ページを作成する

インスタンス化ができたら、次はaddPage関数を使って新しくページを追加します。関数の引数は、用紙の向きと用紙サイズ、余白設定、tocpageの設定です。サンプルでは、下記のようにすべて初期値としました。
$pdf ->addPage();

4.フォントサイズを指定する

フォントサイズは、setFont関数で指定します。指定できるフォントは、Helvetica-BoldやTimes-Roman、Times-Italicなどです。そのほかにも、setFont関数の第2引数でフォントスタイルを指定することもできます。
$pdf ->setFont(‘kozgopromedium’, ‘B’,10);

5.PDF出力する内容を変数に代入する

次は、PDF出力する内容を変数に代入します。HTML文章は、通常の文字列よりも長いので、ヒアドキュメントを使用するのがおすすめです。
$html = <<< EOF
HTML文章
EOF;

6.HTMLを書き込む

編集に代入したHTML文章を書き込みます。書き込みをする際は、writeHTML関数を使用してください。引数は、書き込む内容が代入されている変数を指定します。サンプルの場合は、$htmlです。
$pdf ->writeHTML($html);

7.最後にアウトプットして完了

最後にアウトプットして完了です。アウトプットは、Output関数を使用します。
$pdf ->Output(引数);

Output関数の第1引数は、出力時のファイル名の指定です。どのような名前で保存したいのかを決めて設定しましょう。基本的には、ファイル名がかぶらないように日付などを使用するのが一般的です。

第2引数は、どのような出力にするのかを指定します。I、D、F、Sの4種類から選択可能です。Iはブラウザに出力することを意味します。ブラウザにそのままPDFが表示されるという形です。Dはブラウザでダウンロードしたいときに設定します。また、ローカルファイルとして保存するときはFです。Sは文字列で出力するときに使いますが、あまり使用の機会は少ないでしょう。

TCPDFを使う際の注意点

TCPDFは基本的に簡単で、開発経験を持つエンジニアであれば、十分に使いこなすことができます。しかし、使用にはいくつかの注意点があります。注意点を知らずに実装するとエラーにはまってしまったり、思い通りの出力を得られなかったりする可能性もあるので、ぜひチェックしてください。

注意点①kozgopromediumを指定すること

1つ目の注意点は、setFont関数の第1引数でkozgopromediumを指定することです。TCPDFは日本語フォントの種類が少なく、デフォルトの状態のまま実行すると日本語が文字化けしてしまいます。そのため、デフォルト設定から必ず変更しなければならない部分です。

注意点②「¥」がバックスラッシュになる

2つ目の注意点は、半角の¥マークがバックスラッシュに変化されることです。PDF出力は請求書や領収書など、金額を表記する機会が多いため、知らないとエラーにはまってしまう可能性があります。¥マークを使用するときは、全角の¥マークを使うことで、バックスラッシュになってしまう問題を解決することが可能です。そのため、¥マークを使うときは、全角で入力するようにしてください。

TCPDFを覚えてPHPを使用したPDF出力をマスターしよう

今回は、PHPでPDF出力ができるTCPDFの基本概要や使い方の手順を解説しました。比較的ドキュメントが豊富にあるので、開発経験豊富なエンジニアであれば、使いこなすことは容易です。ぜひ、TCPDFを活用してPDF出力ができるWebアプリケーションを構築しましょう。

しかし、開発リソースが逼迫していてて今回のようなPDF出力機能の実装に限らず、社内の要望になかなか応えられないことに悩んでいる方も多いのではないでしょうか。

Wakka Inc.では、そのような方に向けて『海外子会社化もできる、オフショア・ラボ開発サービス』で
企画・開発・運用保守までトータル支援を行っていますので、リソースや開発ノウハウ不足に悩む方は、下記の問い合わせボタンからお気軽にお問い合わせください。

また、ラボ型開発について詳しく知りたい方は『【ラボ型開発】 その特徴とメリット・デメリットは?|分かりやすく解説』でも解説していますので、ぜひご覧ください。

 

お問い合わせはこちら

▼ラボ型開発がサクッとわかる資料、無料配布中!▼

10分でわかる_ガイドブック_DL

 

鍋山亘

鍋山亘
日系オンラインリサーチ会社のCTOとしてベトナムチームを立ち上げ、Wakka Inc.のテクニカルマネージャーとして参画。現在はベトナム拠点で開発チームの標準化や社内のインフラ管理・ITプロジェクト統括をやっています。モットーは『みんなで頑張りましょう』

お見積りやご相談について

Wakka Inc.へのお見積りやご相談は、お問い合わせ
フォームをご利用ください。

お電話でのお問い合わせ03-3353-4811

Scroll Top