上記を中心として、Zope で PDF を生成する方法についてあがいてみましょうというページ。なお、PDFlibGmbH の PDFlib は、大文字を入れて記述。ZpdfDocument のは方は、pdflib で小文字で記述してとりあえずわけておいたら良いかな(でないとごっちゃになるので)。
このページのとおりにすれば、Python から PDFlib を使って PDF が作れるのを確認しています。
ここの FDF の説明が分かりやすい。その他、Acrobat の情報収集先としてよいです。
外部のプログラム HTMLDOC を使って、PDFドキュメントを HTML から作成する方法。このツールは、日本語には対応していない。
英語であれば、StructuredText や HTML から問題なく PDF を作成できます。日本語は、文字化けするのでこのままでは使えません。
日本語を通すと文字化けする。フォント名を追加しただけでは、正しく動きそうもない。
PDFlib 3.x 系のパッチ http://village.infoweb.ne.jp/~ishiji/memo/p_cid.h.3.03.patch
PDFlib 4.01 のパッチ http://village.infoweb.ne.jp/~ishiji/memo/p_cid.h.4.01.patch
でも、商用利用の場合、ライセンス料を考えると、これを使わないで PDF が作成できた方がいいですね。
ライセンスの点からも ReportLab.com のライブラリの方がよさそうなので、PDFlib の方はしばらく横に置いておきます。fukamachi (2002/04/10)
FDF ファイルのデータを使って自動的に テンプレートのPDF ファイルが ダウンロードされ、ここにデータが埋め込まれます。
動きは、実際に見てください。http://www.atransia.co.jp/pdf-demo/
=============== FDF の例 ===============::
%FDF-1.2 1 0 obj << /FDF << /Fields [ <> <> <> <> ] /F (ATicket?.pdf) >> >> endobj trailer << /Root 1 0 R >> %%EOF
=============== FDF の例 終わり===============
仕組みとして、非常に便利なものだと思います。 が、バリデーションコードを入れておかないと、FDF ファイルを ローカルに保存して、そこで書き換えてから、FDF ファイルを 実行して PDF を作成すれば、簡単に偽のファイルが作れてしまいます。 でも、バリデーションコードを入れるようにすれば、ダウンロード後 の偽造も防ぐことができます(ここはやってない)
参考資料は、次のページの右下にあります。
http://www1.kcn.ne.jp/~k-tm/KTworld/tandt/ これはコメントで okojo さんが教えてくれました。 ありがとうございました。
なお、FDF は、cgi-bin においてある perl で作成しています。 (ちょっと手抜きして、上記サイトの perl のスクリプトをほとんど、そのまま動かしてます)
perl を動かすには、ZCGI というプロダクトを使ってます。 http://www.zope.org/Members/haqa/ZCGI
で、Zope にも /cgi-bin なのです。 これけっこう使えます。
Mozilla 0.9.8 on Windows2000 で、make pdf ticket を押すと、ファイルを AcroExch? で開くかダウンロードするかを聞かれ、AcroExch を選ぶと何も起こりません。Advanced で使うアプリケーションを AcroRd32?.exe にしてから再度行い、AcroRd32.exe で開くを選ぶと、なぜか IE5.5 が立ち上がって、その中で Acrobat Reader が立ち上がるんですよねえ。。。日本語がうまく表示されたサンプルを、http://www3.to/she-wolf/fdf-demo.pdf に置いておきます。と思ったら、これはテンプレートなんですねえ。日本語がうまく行っている FDF ファイルを置いておいても、クライアントに Acrobat Reader 5.0 がないとダメですねえ、失敬、失敬。
ちなみに、zope.jp のロゴの部分をクリックすると、実は隠し機能で、確認ページに飛びます。PDF って、けっこういろいろな悪さできそうですね(笑)
Acrobat Tips & Techniques を参考資料に追加。
| Last edited Sun, 10 Sep 2006 15:20:20 +0900 | Edit this page |