「PHP PDF スクレイピング」で調べるとxpdfばかり出てきますが、ZendPdfが何かと便利らしいです。
PDFファイルの読み込み・編集・結合(マージ)などの機能がそろっているのはスゴイですね。
ZendPdfをレンタルサーバーで利用する場合には、Composerが便利なので、SSHで入れます。
その後、Zend_Pdfを入れていくという手順なのですが、下記サイトがとても参考になりました!
ほとんどこちらのサイトを見るだけで済んでしまうと思いますが少しだけ補足しておきます!
①TeraTermを自分のPCにインストール
SSHの設定方法に従い、TeraTermをインストール⇒SSH接続の設定を行います。
ここでは、上記サイトの解説がものすごく丁寧なので困ることはないでしょう。
SSHの設定が完了すれば、レンタルサーバー上でのコマンド操作が可能になります。
②Composerをレンタルサーバーにインストールする
SSH接続ができるようになれば、次はXserverにComposer をインストールする方法を参考にしつつ、Composerをインストールしていきます。
ここで注意点が一つ。
Composerをインストールする時にはPHPのバージョンによってphp5.4⇒php5.6などに変更する必要があります。
curl -s https://getcomposer.org/installer | /usr/bin/php5.4 ←この太字の部分がPHPのバージョンを指定するところ
Composerをレンタルサーバーにインストールすると、ルート直下にcomposer.pharというファイルが生成されたはずです。
③composer.jsonを作成する
ここまでで、composer.pharがレンタルサーバーのルート直下にあるはずです。次は同じディレクトリにcomposer.jsonを作成します。
1 2 3 4 5 |
{ "require": { "zendframework/zendpdf": "dev-master" } } |
composer.jsonに記載するのは、上記のみです。最初と最後の{}が結構大事なので、忘れずにコピペしましょう。
④インストールコマンド実行
TeraTerm上で下記コマンドを実行するとcomposer.jsonで設定したものが自動的にインストールできます。
PHPのバージョンによってphp○○の部分は変更してください。
/usr/bin/php5.6 composer.phar install
(/usr/bin/php5.4 composer.phar install)
⑤PDFを読み込んでPHPで表示する
PDFファイルを読み込む/生成する(Zend_Pdf)を参考にしながらですが、レンタルサーバーで利用できるように修正しました。(特にエックスサーバー)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php //ライブラリの読み込み require_once '/home/yululy/vendor/autoload.php'; use ZendPdf\PdfDocument; //pdfを読み込む $pdfPath = 'sample.pdf'; $pdf = PdfDocument::load($pdfPath); //ブラウザに表示 header ('Content-Type:', 'application/pdf'); header ('Content-Disposition:', 'inline;'); echo $pdf->render(); ?> |
※composerをせっかく利用しているので、便利な機能を使ってみました。require_once ‘/home/yululy/vendor/autoload.php’;の部分です。短く書けていい感じ。
/home/yululy/の部分はサーバーによって変わるので、変えてください。
外部PDFファイルをそのまま読み込めたら便利!だけど・・・
$pdfPath = ‘http://www……/sample.pdf’;として外部ファイルを読み込みたくなりますが、これはエラーが出ます。残念。
PHPのfilesize()がサーバー内のパスしか受け付けない仕組みみたい。
それなら!と・・・
下記のような方法で一度PDFをサーバーにダウンロードしたあとに、ごにょごにょして削除する方法がカンタンに思いつきますが、スマートではないですね。。。
1 2 3 4 5 6 7 8 9 10 |
<?php //PDFを一旦ダウンロード $pdfPath = 'http://www....../sample.pdf';// PDFのURLを指定 $localPath = '/home/yululy/temp'; // PDFを一時的に保存する先 $data = file_get_contents($pdfPath); file_put_contents($localPath, $data); ?> |
1 2 3 4 5 6 |
<?php //使い終わったPDFを削除 unlink($localPath); ?> |
もっと良い方法あればぜひ教えてください。
コメント
[…] 以前、composerを利用してzendpdfを使ってみました。 […]