R&OS pdfクラスを使用してCodeIgniterでPDFを作成する

FPDFPandadompdfなど、PDFファイルを作成するためのPHPライブラリは非常に多くありますが、私の意見では、 R&OS pdfクラスが最適です。 PHPアンソロジーの本で最初に知りました。 PDFを作成するために他のライブラリを試しました。一部はPHP5でのみ動作し、一部は以前のバージョンで動作しましたが、R&OSと同じ制御と使いやすさを提供するライブラリはありませんでした。 したがって、この例ではこのクラスを使用します。

始めましょう


始める前に、私が用意したアーカイブをダウンロードしてください。 CodeIgniter 1.6.3、およびこの例で説明されているすべてのコードとライブラリが含まれています。

R&OSライブラリを使用するには、2つのファイルが必要です 。これらはclass.ezpdf.phpclass.pdf.phpです。 それらはapplication / librariesディレクトリにあります。 R&OSが適切に機能するには、 フォントディレクトリ内のアーカイブのルートにあるフォントファイルも必要です。

CodeIgniterの一部としてすべてが正しく機能するように、いくつかの変更を加えました。 class.ezpdf.phpの名前をcezpdf.php変更し 、3行次のように置き換えます
include_once(APPPATH。 'libraries / class.pdf.php' );

また、 tutorial.phpコントローラーとpdf_helperヘルパーも作成しました。 php

ハローワールド


関数hello_world()
{
$ this- > load- > library( 'cezpdf' );

$ this-> cezpdf-> ezText( 'Hello World' 、12、array( 'justification' => 'center' ));
$ this-> cezpdf-> ezSetDy(-10);

$ content = '素早い茶色のキツネは怠zyな犬を飛び越えます。 DJはMTVがクイズの進行を待つときに群がります。
キツネの助けを借りたジャンクMTVクイズ。 バウドジョグ、フリッククォーツ、ベックスニンフ。 ;

$ this-> cezpdf-> ezText($ content、10);

$ this-> cezpdf-> ezStream();
}


上記のコードを使用して、 この PDFファイルを作成しました。

まず、R&OSライブラリを接続しました。 次に、 ezText()を使用して、ドキュメントのタイトル設定します。 この関数は、ヘッダーテキストを最初の引数として受け取り、配列として渡されるフォントサイズと最後のオプションの引数は追加の構成オプションです。 たとえば、配置(この場合、中央揃え)

ヘッダーの後に、 ezSetDy()を使用して空のスペースを追加します。 次に、変数$ contentに含まれるテキストを配置します。 これを行うには、再びezText()を使用します。 そして、 ezStream()を使用してドキュメントの作成を完了します。 この関数はドキュメントを形成し、ブラウザに送信します。 これで、ユーザーはPDFを表示またはダウンロードできます。

表形式データの使用


レポート、またはテーブルビューを必要とするデータを操作する場合、PDFでテーブルを表示するタスクは簡単ではありません。 しかし、R&OSライブラリでは、配列を作成するのと同じくらい簡単です。
関数テーブル()
{
$ this- > load- > library( 'cezpdf' );

$ db_data [] = array( 'name' => 'Jon Doe''phone' => '111-222-3333''email' => 'jdoe@someplace.com' );
$ db_data [] = array( 'name' => 'Jane Doe''phone' => '222-333-4444''email' => 'jane.doe@something.com' );
$ db_data [] = array( 'name' => 'Jon Smith''phone' => '333-444-5555''email' => ' jsmith@someplacepsecial.com ' );

$ col_names = array(
'name' => 'Name'
'phone' => '電話番号'
'メール' => 'メールアドレス'
);

$ this-> cezpdf-> ezTable($ db_data、$ col_names、 'Contact List' 、array( 'width' => 550));
$ this-> cezpdf-> ezStream();
}


それが私たちが得たものです。

上記のコードでは、 $ db_dataデータ配列を作成し、将来のテーブルの列名に対応するキーを持つ$ col_names配列を作成しました。 テーブルを作成するには、 ezTable()関数を使用します。 最初の引数にはテーブルデータの配列、次に列名の配列、3番目の引数はテーブル名、最後のオプションの引数には構成データの配列が含まれます。 この場合、テーブルの幅が示されます。

ヘッダーと地下室


かなり多数のレポートに標準のヘッダー/フッターが含まれています。 作成日、ドキュメントの作成者の名前、ページ数などを含めることができます。

ヘッダー/フッターを追加するプロセスはもう少し複雑です。 このプロセスをヘルパーにもたらしました
関数prep_pdf($ orientation = 'portrait'
{
$ CI =&get_instance();

$ CI-> cezpdf-> selectFont(base_url()。 '/ Fonts' );

$ all = $ CI-> cezpdf-> openObject();
$ CI-> cezpdf-> saveState();
$ CI-> cezpdf-> setStrokeColor(0,0,0,1);
if ($ orientation == 'portrait' ){
$ CI-> cezpdf-> ezSetMargins(50,70,50,50);
$ CI-> cezpdf-> ezStartPageNumbers(500,28,8、 '''{PAGENUM}' 、1);
$ CI-> cezpdf-> line(20,40,578,40);
$ CI-> cezpdf-> addText(50.32.8、 'Printed on'。Date( 'm / d / Y h:i:s a' ));
$ CI-> cezpdf-> addText(50,22,8、 'CI PDFチュートリアル-www.christophermonnat.com ' );
}
その他 {
$ CI-> cezpdf-> ezStartPageNumbers(750,28,8、 '''{PAGENUM}' 、1);
$ CI-> cezpdf-> line(20,40,800,40);
$ CI-> cezpdf-> addText(50.32.8、 'Printed on' .date( 'm / d / Y h:i:s a' ));
$ CI-> cezpdf-> addText(50,22,8、 'CI PDFチュートリアル-www.christophermonnat.com ' );
}
$ CI-> cezpdf-> restoreState();
$ CI-> cezpdf-> closeObject();
$ CI-> cezpdf-> addObject($ all、 'all' );
}

このヘルパーの使用例は、 tutorial.phpコントローラーのheaders()関数にあります。 最終的な PDF。

上記のコードは、 pdf_helper.phpヘルパーのprep_pdf()関数にあります。 この機能は、PDFファイルのフッターを作成するすべての作業を行います。 私がしなければならないのは、このヘルパーをロードして、コントローラーでprep_pdf()を呼び出すことだけです。

おわりに


この例では、ボリュームが大きくならないように詳細には触れていません。 見せたかったのは、CodeIgniterとR&OSクラスを使用してPDFドキュメントを作成するのがどれだけ簡単かということだけでした。
PDFファイルを作成する方法は他にもたくさんありますが、 その一部CodeIgniter wikiで説明されています

Source: https://habr.com/ru/post/J31681/


All Articles