•FPDF
•MPDF-任意のhtmlコードからpdfファイルを生成できるFPDFベースのライブラリ
•DOMPDF
•TCPDF
その他の多くのライブラリ。 MPDFライブラリーが最も強力で適切であることが判明しました。また、この場合の重大な欠点ではない場合、最初はキリル文字を正しく使用していました。大きなテーブルと一般に大きなファイルは非常にゆっくり生成されました。 さらに、多くの場合、生成はまったく行われず、スクリプトは504エラーで停止しました。
さらに検索すると、wkhtmltopdfプログラムが見つかりました。 プログラムのウェブサイト: http : //wkhtmltopdf.org
PHPライブラリとは異なり、これは、Linux、Windows、およびその他のオペレーティングシステム用のパッケージおよび実行可能ファイルの形式で配布されるサーバープログラムです。 プログラムはhtmlコード(Webアドレス、ファイルパス、またはコード行の形式)を受け入れ、それに基づいてサーバー上でpdfファイルを生成します。
予備的な経験から、WindowsのローカルXAMPPサーバーでは、300〜500ページの巨大なHTMLテーブルが1〜2秒でPDFファイルに変換されることがわかりました。
CentOs 6にwkhtmltopdfをインストールします
このプログラムを使用するには、webkitとqtが必要です。
そのため、必要な環境とプログラムをサーバーにインストールします。 サーバーにCentOs 6がインストールされているので、ルート権限でサーバーにアクセスして、次のコマンドを実行します。
開発者のサイトからのリンクを使用してwkhtmltopdfプログラムのrpmパッケージを受け取り、本番サーバーにインストールします。
wget download.gna.org/wkhtmltopdf/0.12/0.12.2.1/wkhtmltox-0.12.2.1_linux-centos6-i386.rpm
yum --nogpgcheck localinstall wkhtmltox-0.12.2.1_linux-centos6-i386.rpm
すべてのパッケージの依存関係が自動的にチェックされ、満たされる必要があります。 何らかの理由で環境が確立されていない場合は、次のコマンドを使用します。
yum install urw-fonts libXext openssl-devel libXrender
yum install xorg-x11-fonts-cyrillic.noarch xorg-x11-fonts-misc.noarch xorg-x11-fonts-truetype.noarch xorg-x11-fonts-100dpi.noarch xorg-x11-fonts-75dpi.noarch fonts-ISO8859-2.noarch fonts-ISO8859-2-100dpi.noarch fonts-ISO8859-2-75dpi.noarch freefont.noarch
最近まで、プログラムはrpmパッケージとして提供されていなかったため、バイナリファイルをコピーして、必要なすべてのパッケージを手動でインストールする必要がありました。
CentOs 6でwkhtmltopdfを使用する
プログラムを起動するための一般的な形式は次のとおりです。
wkhtmltopdf <, .html> <, .pdf>
さらに、このプログラムでは、個別のhtmlファイルからドキュメントのヘッダーとフッターを自動的に埋め込むことができます。 このための構文は次のとおりです。
wkhtmltopdf --header-html <, .html> --footer-html <, .html> <, .html> <, .pdf>
また、プログラムを起動するためのオプションには、結果のPDFファイルのカスタムサイズフィールドがあります。 上下のフィールドで、プログラムはヘッダーとフッターを置き換えます。
wkhtmltopdf --margin-top 35mm --margin-bottom 27mm --margin-left 10mm --margin-right 10mm --header-html <, .html> --footer-html <, .html> <, .html> <, .pdf>
この例では:
•上マージン:35 mm
•下マージン:27 mm
•左右のマージン:各10mm
また、地下のコードの例を示します。 この例では、ページ番号が自動的に生成され、地下室に置き換えられます。 したがって、ドキュメントのページには自動的に番号が付けられます。
//
また、プログラムを起動するための便利なオプションの中には:
-encoding-ソースhtmlファイルのエンコーディングを指定します。例:
--encoding windows-1251
-ページサイズ-ページ形式を指定します。例:
--page-size A4
-向き-ページの向き。例:
--orientation Landscape
このWebプロジェクトでは、pdfファイルを形成するphpページで使用されるphpコードは次のとおりです。
$tmp=time();
$f=fopen(ABSPATH.'/tmp/'.$tmp.'.html','w');
fputs($f, $llg);
fclose($f);
$cd = "cd ".ABSPATH.'/tmp';
exec($cd);
$command = "wkhtmltopdf-i386 --margin-top 35mm --margin-bottom 27mm --margin-left 10mm --margin-right 10mm --footer-html ".ABSPATH."/tpl-sm/pl_pdf/pdf_footer.html --header-html ".ABSPATH."/tpl-sm/pl_pdf/pdf_header.html ".ABSPATH.'/tmp/'.$tmp.'.html'." ".ABSPATH.'/tmp/'."$tmp.pdf";
exec($command);
if (file_exists(ABSPATH.'/tmp/'.$tmp.'.pdf')) {
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="pricelist.pdf"');
readfile(ABSPATH.'/tmp/'.$tmp.'.pdf');
}
unlink(ABSPATH.'/tmp/'.$tmp.'.pdf');
unlink(ABSPATH.'/tmp/'.$tmp.'.html');
このコードでは:
•変数$ llg-価格表のHTMLコードを含む
•ABSPATH定数-サーバー上のWebプロジェクトフォルダーへの絶対パス。
コードは次のことを行います。
•価格表のHTMLコードを一時ファイルに書き込みます。
•一時ディレクトリに移動します。
•必要なオプションを指定してwkhtmltopdfを実行します。
•pdfファイルが正常に作成された場合、ブラウザでユーザーに返され、pricelist.pdfという名前でファイルをダウンロードするように提案します。
•一時ディレクトリから一時HTMLおよびPDFファイルを削除します。