ホームページ  >  記事  >  バックエンド開発  >  PHP で PDF ドキュメント ジェネレーターを作成する方法

PHP で PDF ドキュメント ジェネレーターを作成する方法

WBOY
WBOYオリジナル
2016-08-08 09:33:32954ブラウズ

PHP で PDF ドキュメント ジェネレーターを作成する方法

PHP の最大の利点の 1 つは、新しいテクノロジーのサポートが非常に簡単であることです。この言語の拡張性により、開発者は新しいモジュールを簡単に追加でき、世界中の技術グループのサポートと多くの拡張モジュールのサポートによって PHP が実現されています。は、最も多機能な Web プログラミング言語の 1 つになりました。現在利用可能な拡張モジュールを使用すると、開発者は IMAP および POP3 操作の実行、画像と Shockwave Flash アニメーションの動的生成、クレジット カードの検証の実行、機密データの暗号化と復号化、および XML 形式でのデータの解析を行うことができます。しかし、それだけではありません。PHP にバインドできる新しいモジュール、つまり開発者が PDF (Adobe Portable Document Format) 形式でファイルを動的に生成できるようにするモジュールが追加されました。これを見てみましょう。まず、PHP でこのモジュールを使用する方法を参照してください。

PHP で PDF 形式のドキュメントを操作できるようにするには、まず PDFLib 拡張ライブラリをシステムにインストールする必要があります (Lunix システムを使用している場合は、http://www.pdflib.com/pdflib/index からダウンロードできます)。 Windows システムを使用している場合は、コンパイルされた PDFLib ライブラリをダウンロードし、PHP 設定ファイル内の対応する行のコメントを削除するだけで済みます。


拡張子=php_pdf.dll


動的読み込みの場合は、次のコマンドを参照することもできます。


dl("php_pdf.dll");


さらに、PDF 形式を表示するには Adob​​e Acrobat PDF Reader が必要です。お持ちでない場合は、http://www.adobe.com/ から無料でダウンロードできます。

事前準備が完了したら、PDF ファイルを作成できます。簡単な例を次に示します。


// 新しい PDF ドキュメント ハンドルを作成します

$pdf = PDF_new();


//ファイルを開く

PDF_open_file($pdf, "PDFTest.pdf");


// 新しいページを開始します (A4)

PDF_begin_page($pdf, 595, 842);


// フォントオブジェクトを取得して使用します

$arial = PDF_findfont($pdf, "Arial", "ホスト", 1);

PDF_setfont($pdf, $arial, 10);


//テキストを出力する

PDF_show_xy($pdf, "これは PDF ドキュメントの試験です。優れたライブラリです。",50, 750);

PDF_show_xy($pdf, "よかったらぜひ挑戦してみてください!", 50, 730);


//終了ページ

PDF_end_page($pdf);


// ファイルを閉じて保存します

PDF_close($pdf);

?>

次に、それを PHP ファイルとして保存し、ブラウザで参照します。PHP は上記のコードを実行し、新しい PDF ファイルを生成して、指定された場所に保存します。

次に、PHP を使用して PDF ファイルを作成するには、次の 4 つの手順を実行します。 1. ドキュメントのフォントと色を登録します。 3. PDFLib が提供する関数を使用して、テキストまたはテキストを書き込みます。ファイルハンドルに画像を描画します。 4. ドキュメントを保存します。

まず、次の構文を使用して PDF ドキュメント ハンドルを作成します。


$pdf = PDF_new();


このタスクは PDF_new() 関数によって完了します。この関数は、後続のすべての操作で使用される PDF ドキュメントへのハンドルを返します。

次のステップは、PDF ファイルに名前を付けることです。これは PDF_open_file() 関数によって行われます。これには、パラメーターとして、以前に作成したファイル ハンドルとカスタム ファイル名が必要です。


PDF_open_file($pdf, "PDFTest.pdf");


ドキュメントを作成したら、PDF_begin_page() 関数を使用してドキュメントに新しいページを挿入できます。


PDF_begin_page($pdf, 595, 842);


次に、PDF_end_page() でページを終了します。

ここで、PDF_begin_page() 関数には他に 2 つのパラメータがあることに注意してください。それらはそれぞれページ サイズの幅と高さを表します (ポイント、1 ポイントは 1/72 インチに等しい)。ここでの強みは、PHP では A4 などのほとんどの標準ページ サイズも提供していることです。上記の例では A4 サイズを使用しています。

PDF_begin_page() 関数の呼び出しと PDF_end_page() 関数の間のコードは、テキスト、画像、幾何学図形などのコンテンツを PDF ドキュメントに書き込みます。この例では、テキスト行を書き込むだけで、最初にフォントを取得してから、テキストをドキュメントに書き込みます。 PDF_findfont() 関数と PDF_setfont() 関数を使用してフォントを選択および登録すると、非常に便利です。PDF_findfont() 関数は、フォントの名前、使用されるエンコーディング、およびフォントの名前を準備します。フォントを PDF ファイルに埋め込むかどうか。 PDF_findfont() 関数は、PDF_setfont() 関数で使用されるフォント オブジェクトを返します。


$arial = PDF_findfont($pdf, "Arial", "ホスト", 1);

PDF_setfont($pdf,$arial, 10);


フォントを設定したら、PDF_show_xy() 関数を使用して、ページ上の指定した場所に文字列を書き込むことができます。


PDF_show_xy($pdf, "これは PDF ドキュメントの試験です。優れたライブラリです。",50, 750);

PDF_show_xy($pdf, "よかったらぜひ挑戦してみてください!", 50, 730);


PDF_show_xy() 関数は、ページにコンテンツを書き込むために使用されます。最後の 2 つのパラメーターは、書き込まれる文字列の座標位置です。座標の原点 (0, 0) はドキュメントの左下隅にあることに注意してください。 。テキストが終了したら、PDF_end_page() でページを閉じることができます。もちろん、さらにページを書くこともできます。すべてのページが書き込まれた後、PDF_close() 関数を使用してドキュメントを閉じます。このとき、ドキュメントは PDF_open_file() 関数の呼び出し時に指定されたファイル名とパスに保存され、ドキュメント ハンドルは破棄されます。

PDFLib ライブラリではそれ以外のこともできます。前のファイルを例として、テキストの下に画像ファイルを追加してみましょう。


$image = PDF_open_image_file($pdf, "jpeg", "PDFImageTest.jpg");

PDF_place_image($pdf, $image, 50, 650, 0.25);


シンプルではないでしょうか? PDF_open_image_file() 関数は、グラフィック ファイルを開きます。 許容される画像タイプは、GIF、JPEG、TIFF、および PNG です。 この関数は、前の画像ハンドルを使用して PDF ドキュメントの中央に画像を挿入します。 。ここでの座標位置は、画像の左下隅を指します。最後のパラメータは、画像が実際のサイズで表示されることを意味し、0.5 は元のサイズの半分で表示されることを意味します。 。

PDF ドキュメント内に既存の画像を描画することに加えて、PDF モジュールは幾何学的図形を描画できる多くの機能も提供します。例: 直線、円、長方形などの幾何学模様。直線の描き方は次のとおりです。


$pdf = PDF_new();

PDF_open_file($pdf, "LineExam.pdf");

PDF_begin_page($pdf, 595, 842);

$arial = PDF_findfont($pdf, "Arial", "ホスト", 1);

PDF_setfont($pdf, $arial, 12);


//直線の色を設定します

PDF_setcolor($pdf, "ストローク", "rgb", 0, 0, 0);


// ロゴを左上隅に配置します

$image = PDF_open_image_file($pdf, "jpeg", "logo.jpg");

PDF_place_image($pdf, $image, 50, 785, 0.5);


//ロゴの下に直線を描きます

PDF_moveto($pdf, 20, 780);

PDF_lineto($pdf, 575, 780);

PDF_ストローク($pdf);


// ページの下部に別の直線を描画します

PDF_moveto($pdf, 20,50);

PDF_lineto($pdf, 575, 50);

PDF_ストローク($pdf);


// テキストを出力します

PDF_show_xy($pdf, "Meng's Corporation", 200, 35);

PDF_end_page($pdf);

PDF_close($pdf);

?>

上の例からわかるように、直線を描画するには、PDF_moveto()、PDF_lineto()、および PDF_ストローク() の 3 つの関数のみが必要です。上記の例では、まず PDF_moveto($pdf, 20, 780) 関数を使用してカーソルを座標 (20, 780) に移動し、次に PDF_lineto($pdf, 575, 780) 関数を使用して座標を定義します。直線上の別の点 (575, 780)、最後に PDF_ストローク($pdf) を使用して線を描きます。カラーを設定する関数 PDF_setcolor($pdf, "ストローク", "rgb", 0, 0, 0) には、いくつかのパラメーターがあります。カラー塗りつぶしモードには、ストローク、塗りつぶし、およびその両方の 3 つのオプションがあります。 CMYK。配色の色の値。 PDF_setcolor() 関数で使用される値は色のパーセンテージ、つまり色の明るさであることに注意してください。たとえば、赤 (RGB: 255、0、 0) の場合は、次のように記述できます: PDF_setcolor ($pdf, "ストローク", "rgb", 1, 0, 0)。黄色に設定したい場合は、これを実行できます: PDF_setcolor($pdf, "ストローク", "rgb"、1、1、0)。


塗りつぶされた四角形と円を描画するには、次の方法を使用します。


//塗りつぶしの色を設定する

PDF_setcolor($pdf, "fill", "rgb", 1, 1, 0);


//枠線の色を設定します

PDF_setcolor($pdf, "ストローク", "rgb", 0, 0, 0);


// 長方形を描画します。次の 4 つのパラメータは、左下隅の座標 X、Y、幅、高さです。

PDF_rect($pdf, 50, 500, 200, 300);

PDF_fill_ストローク($pdf);

PDF_setcolor($pdf, "fill", "rgb", 0, 1, 0);

PDF_setcolor($pdf, "ストローク", "rgb", 0, 0, 1);


//円を描きます。パラメータは円の中心座標と半径です。


PDF_circle($pdf, 400, 600, 100)


さらに、PDFLib はドキュメントの概要情報を書き込むための関数も提供します。これらの関数は PDF_set_info_*() で始まり、この情報にはドキュメントの作成者、タイトル、内容、件名などが含まれます。よく使用される関数をいくつか示します。


PDF_set_info_author($pdf, "net_lover");

PDF_set_info_creator($pdf, "孟賢輝");

PDF_set_info_title($pdf, "PHP 試験");

PDF_set_info_subject($pdf, "PHP");

PDF_set_info_keyWords($pdf, "PHP PDF PDFLib");


このような文書をAcrobat Readerで開くと、メニューの「ファイル」→「文書のプロパティ」→「概要」に上に書かれた情報が表示されます。

ここまでは言っておきましたが、PDFLib を使用して PDF ドキュメントを作成する方法については、誰もが基本的に理解していると思います。以下では、実際の例を取り上げて、それが私たちの仕事にどのように役立つかを見ていきます。この例では、提供されたデータに基づいて円グラフを生成します。まず、データ入力フォームを作成し、円グラフの各部分のサイズを入力します。ファイルは次のとおりです。


PHP を使用して PDF ドキュメント (円グラフ) を作成する

円グラフジェネレーター

<表のセルスペース="5" セルパディング="5">

円グラフの各部分のデータ値を (,) で区切って入力してください:

<入力タイプ=テキスト名=データ>


以下は pie.php ファイルのコードです。


//ライブラリを受け入れます

$data = $_POST['データ'];

$slices =explode(",", $data);


// 変数を初期化します

$sum = 0;

$degrees = 配列();

$直径 = 200;

$半径 = $直径/2;


//各円グラフの色を設定し、配列に格納します

$colours = 配列(配列(0,0,0),配列(0,0,1),配列(0,1,0),

配列(1,0,0)、配列(0,1,1)、配列(1,1,0)、

配列(1,0,1));


// 合計値を計算します

$sum = array_sum($slices);


// 各部分を対応するパーセンテージ (360 度の円) に変換します

for ($y=0; $y

$degrees[$y] = ($slices[$y]/$sum) * 360;

}


// PDFドキュメントの作成を開始します

$pdf = PDF_new();

PDF_open_file($pdf, "chart.pdf");

PDF_begin_page($pdf, 500, 500);

PDF_setcolor($pdf, "ストローク", "rgb", 1, 1, 0);

PDF_moveto($pdf, 250, 250);

PDF_lineto($pdf, 350, 250);

PDF_ストローク($pdf);


for ($z=0; $z

{

//塗りつぶしの色を設定する

PDF_setcolor($pdf, "fill", "rgb", $colours[$z][0],

$colours[$z][1], $colours[$z][2]);


// 各円弧の終点座標を計算します

$end_x =round(250 + ($radius * cos($last_angle*pi()/180)));

$end_y =round(250 + ($radius * sin($last_angle*pi()/180)));


// 各円弧を直線で分割します

PDF_moveto($pdf, 250, 250);

PDF_lineto($pdf, $end_x, $end_y);


// 円弧を計算して描画します

PDF_arc($pdf, 250, 250, $radius, $last_angle,($last_angle+$degrees[$z]));


//最後の角度を保存

$last_angle = $last_angle+$degrees[$z];


// 塗りつぶしの色

PDF_fill_ストローク($pdf);

}


//外側の円のアウトラインを再描画します

PDF_circle($pdf, 250, 250, 100);

PDF_ストローク($pdf);


PDF_end_page($pdf);

PDF_close($pdf);


// クライアントに直接出力したい場合は、次のコードを追加します。

$buf = PDF_get_buffer($p);

$len = strlen($buf);

header("コンテンツタイプ: application/pdf");

header("コンテンツの長さ: $len");

header("Content-Disposition: inline; filename=Pie_php.pdf");

PRint $buf;

PDF_削除($p);

?>

上記のプログラムを実行して別の値を入力すると、別の円グラフが表示されます。

PDFLib は、PHP で記述できるだけでなく、Java、C#、VB.NET、VB5/6 (ActiveX/COM)、asp (VBScript/Jscript)、Borland Delphi、Windows Script Host などでも使用できる、互換性の高いモジュールです。 、ColdFusion4.5+、C/C++、Python、Perl、RPG、サポートされているプラ​​ットフォームは Windows だけでなく、Unix/linux、Mac OS、IBM eServer iSeries 400 および zSeries S/390 などです。お気軽にお問い合わせください。特定の動作環境については、Web サイトをご覧ください。

上記では、PHP を使用して PDF ドキュメント ジェネレーターを作成する方法を、関連コンテンツも含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。