【PHP】TCPDF+FPDIで用紙サイズがわからないPDFを読み込む方法

PHPでPDFを扱うときに使用する無料PDFライブラリ「TCPDF+FPDI」の使い方のメモです。

「TCPDF+FPDI」(FPDIでも同じ)を使用すると簡単にPDFファイルを読み込むことができるんですが、ネットで見つかるサンプル通り使用すると「縦のA4サイズ」で読み込まれてしまって、A3などの用紙サイズのPDFを読み込むとはみ出してしまいます。

もちろん、ページを追加するときに

[php]
addPage(”P”,"A3”);
[/php]

のように用紙サイズを明確に指定してやれば適切なサイズで読み込むことは可能です。

でも、この方法だと予めサイズがPDFの用紙サイズがわかっていればいいんですが、A3やB5などの複数の用紙サイズのPDFを読み込む場合には使えません。

読み込むPDFファイルの用紙サイズってのをどうやって調べればいいのか?簡単にわかりそうなものなんですが、そのやり方を紹介しているサイトが見つからず数時間も悩んでしまいました。

リファレンスマニュアルを読んだりして以下の方法でPDFファイルの用紙サイズを取得して適正な用紙サイズでPDFを読み込むことができたので紹介しておきます。複数の用紙サイズがぶち込まれたPDFも正常に読み込めるはずです。

[php]
$pdf = new FPDI(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, ‘UTF-8’, false);

$pageno = $pdf->setSourceFile($filePass);

//PDFをいい感じの設定で初期化
$pdf->SetMargins(0, 0, 0); // 用紙の余白を0にする
$pdf->SetCellPadding(0); // セルパディング設定
$pdf->SetAutoPageBreak(false); // 自動改ページOFF
$pdf->setDisplayMode(‘default’); // ズーム設定は標準
$pdf->setPrintHeader(false); // ヘッダー使わない
$pdf->setPrintFooter(false); // フッター使わない

//PDFファイルの読み込み処理(全てのページを順次読み込む)
for ($i = 0; $i < $pageno; $i++) {
//読み込みをするPDFのページ
$tplidx = $pdf->ImportPage($i + 1);
//読み込みをするPDFの用紙サイズチェック
$pdfSize = $pdf->getTemplateSize($i + 1);
$pdfSizeW = $pdfSize["w"];
$pdfSizeH = $pdfSize["h"];
//用紙が縦か横かの確認
if($pdfSizeW<=$pdfSizeH){
//縦方向の場合
$pdfOrientation = "P";
}
else{
//横方向の場合
$pdfOrientation = "L";
}
//ページを追加する
$pdf->addPage($pdfOrientation,array($pdfSizeW,$pdfSizeH));
$pdf->useTemplate($tplidx);
}

//PDFファイルをサーバーに保存する
$pdf->Output($saveName, ‘F’);

[/php]

getTemplateSizeっていうやつを使えば簡単にサイズが取得できたんですが、これをなかなか見つけられなくて大変でしたよ・・・・

スポンサーリンク
NO IMAGE
この記事が気に入ったら
いいね!をお願いします<(_ _)>
コメント欄は廃止しました。ご意見・ご感想はツイッターでお願いします。
関連コンテンツ
スポンサーリンク