ljhvs @Wiki

PDFlib

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集



岡田です。

FPDFは十分すばらしいのですが、PDFlibと基本的に同じものではないので、そ
の違いについて、情報としてお書きします。ツールは適材適所ですので、ケー
スに応じて選択することが必要だと思います。

共通機能:この目的ならFPDFで十分です。
  • PDFを座標軸を含めプログラミングして作成する
画像関数、テキスト関数などの基本機能。

PDFlibのアドバンテージ:
  • 既存PDFのインポートと、そのPDFとのマージ機能(PDI)
  • フィールドのラベリング(名前付け)による、座標系と切り離したプログラミングが可能(PPS)
  • PHPでなくても構わない。それ以外の言語にも対応。
  • 暗号化、セキュリティ機能への対応。
 これがないとPDFの意味がないという要件もあります。
  • 生成パフォーマンス

あくまで一般的な話、後者の機能が必要とされる場合、開発者を投入して後者
を自前で実装するには、ライセンス料の何倍ものコスト、期間がかかるなどの
理由から、PDFlibを採用するのが妥当だとの考え方もあります。

詳細な点は、PDFlib HOWTOや、PDFlib日本語マニュアルでご参照になれますの
で、よろしければご覧ください。
http://pdflib.jp/products/pdflib/download/index.html#Documentation


R I O T A R O O K A D A
http://okdt.org/blog/ - Okdt portal blog
http://techstyle.jp/ - Security & Opensource Solution
http://tunebiz.net/ - PDFlib Professional Service



■Perl での PDFlib のインストール方法は?

マニュアルの P.35 に Perl でのインストール方法が書かれていますが、要するに必要なことは @INC モジュールのサーチパスに pdflib_pl.so と pdflib_pl.pm をコピーしてあげるだけです。まず下記を実行して、パスを探します。
# perl -e 'use Config; print $Config{sitearchexp};'

RedHat 系は /usr/lib/perl5/site_perl/5.6.1/i386-linux に、Debian 系は /usr/local/share/perl/5.6.1 にコピーすることになるかと思います(Perl 5.6.1 の場合)。
# cp perl56/pdflib_pl.so /usr/lib/perl5/site_perl/5.6.1/i386-linux/
# cp pdflib_pl.pm /usr/lib/perl5/site_perl/5.6.1/i386-linux/


これでインストールは完了です。サンプルファイルを「perl hello.pl」などのようにして実行し、PDF が正常に生成されることを確認してみてください


■172.18.10.17での実際
wget http://pdflib.com/products/pdflib/download/602lang/PDFlib-6.0.2-Linux-perl.tar.gz
tar xvf PDFlib-6.0.2-Linux-perl.tar
ls

Makefile pdflib_pl.pm
businesscard.pl perl56
chartab.pl perl58
hello.pdf perl58-nt
hello.pl perlAS56
image.pl perlAS58
invoice.pl quickreference.pl
pdfclock.cgi.pl readme.txt
pdfclock.pl

cp * /var/www/html/pdflib/
http://172.18.10.17/pdflib/

これで
pdfclock.cgi.pl
の作動を確認 あとはplをhtmlに埋め込むのか
&イメージをドウPDFに変換するかだ


イメージ関連の関数
PDF_place_image

PDF_place_image
PDF_open_image

$iImage = PDF_open_image($oPDF, $sType, $sSource, $sData, $iLength, $iWidth, $iHeight, $iComponents, $iBpc, $sParams);
$sSourceという種類の$sDataで指定された場所の画像をオープンし、PDF画像IDを返します。 $sSourceにはfileref、url、memoryがそれぞれ指定できます。 $sDataはfilerefのときにはファイル名、urlのときにはイメージのURL、memoryの場合には イメージデータそのものになります。

PDF_open_image_file

$iImage = PDF_open_image_file($oPDF, $sType, $sFileName, $sStringParam, $iIntParam );
$sTypeで指定された形式の$sFileNmaeというファイルの画像をオープンし、PDF画像IDを返します。

PDF_close_image

PDF_close_image($oPDF, $iImage);
PDF_open_xxxx でオープンされた画像を閉じます。

PDF_open_CCITT

$iImage = PDF_open_CCITT($oPDF, $sFileName, $iWidth, $iHeight, $iBitReverse,
  $iK, $iBlack1st);

CCITT G3またはG4圧縮されたビットマップデータをオープンし、、PDF画像IDを返します。


以下のテキストボックスにお名前を入れて、送信ボタンを押すだけです。


<form action="../cgi-bin/tpdf.pl" method="GET">
   <p>あなたのお名前をどうぞ <input type="text"
   size="20" name="txtName"> <input type="submit" name="exeOk"
   value="実行"></p>
</form>

#!/home/hippo20004/www/bin/perl
use strict;
use pdflib_pl;
use CGI;
my $oCgi = new CGI;

#0
. PDFの作成、ファイルのオープン
my $oPdf = PDF_new();
die "Couldn't open PDF file" if (PDF_open_file($oPdf, '-') == -1);

#1
.ファイルの情報設定
PDF_set_info($oPdf, "Creator", "Perl5.6+pdflib on Linux");
PDF_set_info($oPdf, "Author", "Hippo2000");
PDF_set_info($oPdf, "Title", "Welcome to www.hippo2000.info");

#2
.イメージファイルのオープン
my $oImgH = PDF_open_image_file($oPdf, 'png',
       '/home/hippo20004/www/image/hippo2000r.png', "", 0);
die "Couldn't open image 'Hippo2000'" if ($oImgH == -1);
my $oImgT = PDF_open_image_file($oPdf, 'jpeg',
       '/home/hippo20004/www/image/kabaya.jpg', "", 0);
die "Couldn't open image 'Kabaya'" if ($oImgT == -1);

#3
.ページの開始
print $oCgi->header(-type =>'application/pdf');
PDF_begin_page($oPdf, 595, 842); #A4縦

#4
.フォントを検索し、設定
my $fMin = PDF_findfont($oPdf, "HeiseiMin-W3", "EUC-H", 0);
my $fAsc = PDF_findfont($oPdf, "Helvetica", "host", 0);

#5
.テキスト出力、イメージの添付
#5
.1 あなたの名前+「ようこそ」
PDF_setfont($oPdf, $fMin, 30.0);
PDF_set_text_pos($oPdf, 50, 600);
PDF_show($oPdf, $oCgi->param('txtName') . ' 様');
PDF_set_text_pos($oPdf, 100, 500);
PDF_setfont($oPdf, $fMin, 36.0);
PDF_show($oPdf, "河馬屋二千年堂へようこそ");
PDF_setfont($oPdf, $fMin, 20.0);
PDF_continue_text($oPdf, "");
PDF_continue_text($oPdf, "これからもパワーアップしていく予定です。");
PDF_continue_text($oPdf, "今後ともよろしくお願いいたします。");

PDF_set_text_pos($oPdf, 420, 200);
PDF_show($oPdf, "川合 孝典");
PDF_setfont($oPdf, $fAsc, 16.0);
PDF_continue_text($oPdf, ' Hippo2000');
#5
.2 現在の時刻
my ($iSec, $iMin, $iHour, $iDay, $iMon, $iYear) = localtime;
PDF_setfont($oPdf, $fAsc, 16.0);
PDF_continue_text($oPdf,
       sprintf("(%4d/%2d/%2d %d:%02d:%02d)", 
                   $iYear+1900, $iMon+1, $iDay, $iHour, $iMin, $iSec)
   );

#5
.3 画像の貼りつけ(タイトル、河馬)
PDF_place_image($oPdf, $oImgT, 100, 700, 1.0);
PDF_place_image($oPdf, $oImgH, 450, 20, 0.4);

#6
. ページの終わり、全体の終わり
PDF_end_page($oPdf);
PDF_close($oPdf);
PDF_delete($oPdf);

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

目安箱バナー