websitterのブログ

子供のお世話でなくwebサイトのお世話をするwebsitterのブログです

PHPで複数のPDFファイルを一つのPDFファイルに結合する

PHPで複数のPDFファイルを一つのPDFファイルに結合させるサンプルです。

Linuxの専用サーバーならpdftkをインストールすれば簡単に実現できるのですが、よくある共有のレンタルサーバーで使いたいため、PHPのみで実現することが最重要要件。

この要件にそって調べてみましたが、なかなか良い答えに行きつかず、最終的には、結局自分で書いちゃいました。もし、今後お困りの方が現れた時、解決の糸口にしてもらえたらと思います。

 今回、PHPPHPでPDFを扱うときに、いつもお世話になっているtcpdfとfpdfを使っています。

あえて、初心者の人にも、流れがわかりやすいようにクラスにもせず、PDFファイルを読み込むところなんて結合したいPDFのファイル名を配列にでも入れて、ループさせるのが当たり前でしょうけど、そのままにしてあります。

ポイントしか書いてないので、あとはアレンジしてください。

◆◆◆サンプルソース◆◆◆

<?php
require_once('./tcpdf/tcpdf.php');
require_once('./fpdi/fpdi.php');

// インスタンス化
$pdf = new FPDI();

// 事前準備
// 新たに作成するPDFファイルの余計な線を消す
$pdf->setPrintHeader( false );    
$pdf->setPrintFooter( false );

// PDF1を読み込み、新しいPDFにセットする
$pageCnt = 0;
$pageCnt = $pdf->setSourceFile('PDFFILE01.pdf');
for($i=1;$i<=$pageCnt;$i++){
	$pdf->addPage();
	$pdf->useTemplate($pdf->importPage($i));
}

// PDF2を読み込み、PDF1の後に結合する
$pageCnt = 0;
$pageCnt = $pdf->setSourceFile('PDFFILE02.pdf');
for($i=1;$i<=$pageCnt;$i++){
	$pdf->addPage();
	$pdf->useTemplate($pdf->importPage($i));
}

// 最終結果を画面出力
$pdf->output();
?>

こんな感じ!調べてないで、初めからソース書いた方が早かった・・・。

画面出力の部分を書き換えてファイルをサーバーに保存することももちろん可能です。また、応用すれば、複数ページの一つのPDFファイルを1ページずつ、別々のPDFファイルに分割したり、任意のページだけを抜き出して結合し直してPDFを再構成するなど、分割したり結合したり・・・は、さまざまな使い方が出来そうです。

 websitter Tom