トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

Diary/2007-5-9

iTextとかInline::Javaとか

iTextは、JavaでPDFを操作するためのライブラリ。
http://www.lowagie.com/iText/
# ロゴが「でText」に見えてしまう...
で、ふとperlから使えたら便利かなと、
Inline::Java で Perl から Java の日付関連クラスを使用するを参考に(というかそのまま)
iTextをInline::Javaつかってperlから使ってみた。動いた。

#!/usr/bin/perl
use strict;

use Inline

    Java => 'STUDY',
    STUDY => [qw(
                 java.io.FileOutputStream
                 java.io.IOException
                 com.lowagie.text.Document
                 com.lowagie.text.DocumentException
                 com.lowagie.text.Paragraph
                 com.lowagie.text.pdf.PdfWriter
    )];

my $doc =  com::lowagie::text::Document->new();
my $fos = java::io::FileOutputStream->new("test.pdf");
my $writer = com::lowagie::text::pdf::PdfWriter->getInstance($doc, $fos);
$doc->open();
$doc->add(com::lowagie::text::Paragraph->new("Hello World"));
$doc->close();


とここまでやってから、perlには、PDFJがあるよなぁと思い出したり。

しかし、Inline::Javaって便利だな。Perl書けないけど。
これでCOINSとかいじると、今より楽に実験できるようになるかな?

CPANの設定をやりなおす

最初から設定をやり直したいときは、cpanのシェルを起動して

o conf init

とする

JRubyとiText

JRubyが1.0.0RC1になってた。
というわけで、iTextをJRubyで。

include Java

require 'java'

import java.io.FileOutputStream
import java.io.IOException
import com.lowagie.text.Document
import com.lowagie.text.DocumentException
import com.lowagie.text.Paragraph
import com.lowagie.text.pdf.PdfWriter

begin
  doc =  Document.new();
  fos = FileOutputStream.new("test.pdf");
  writer = PdfWriter.getInstance(doc, fos);
  doc.open();
  doc.add(Paragraph.new("Hello World"));
  doc.close();
rescue DocumentException => e
  puts e
rescue IOException => e
  puts e
end

これは、便利!!