Index > iTextを使ってPDFを生成する(jython,pdf)
Thu, January 27, 2005

iTextを使ってPDFを生成する(jython,pdf)

仕事で作るドキュメントはPDF化して渡すことが多いです。 MacOSXのように標準で、PDF出力がついてるのはすごく便利なんだけど、 請求データのように、データをデータベースとかXMLで管理しているような場合、 そこから、必要なデータだけをひっぱり出してきてそれを適当に整形して PDF出力できたらなぁと思う。

そんなときに、iText+Jythonの組み合わせで、PDF出力を扱うことができれば、 便利かも!と思って、試してみました。

事前準備

JavaにはPDFを生成するオープンソースのライブラリとして iText があるので、これを使う。

を入手して、CLASSPATHに追加しておきます。

※ iTextAsian.jarは日本語を含むPDFを作成する場合に必要になります。

HelloWorld

まずはHelloWorld.を出力してみる。

import sys

import java.io as io

import com.lowagie.text as itext
import com.lowagie.text.pdf as itextpdf


false=0
true=1


outf=io.FileOutputStream(io.File("test.pdf"))

doc=itext.Document(itext.PageSize.A4, 50, 50, 70, 70)
itextpdf.PdfWriter.getInstance(doc,outf)

doc.open()
doc.add( itext.Paragraph( "Hello World." ) )
doc.close()

itext-paulo-149.jarにCLASSPATHが通っていることを確認して、実行。

jython helloWorld.py

結果のPDF

こんにちは世界

次に日本語で、HelloWorld.してみる。

import sys

import java.io as io


import com.lowagie.text as itext
import com.lowagie.text.pdf as itextpdf



false=0
true=1


def createChunkJP(value):
    return createChunkJP_(value,12)

def createChunkJP_(value,fontsize):
    chunk = itext.Chunk(value, createFontJP(fontsize))
    return chunk

def createFontJP(fontsize):
    f = itextpdf.BaseFont.createFont("HeiseiKakuGo-W5","UniJIS-UCS2-H",itextpdf.BaseFont.NOT_EMBEDDED)
    aFont = itext.Font(f, fontsize, itext.Font.NORMAL)
    return aFont




outf=io.FileOutputStream(io.File("test.pdf"))

doc=itext.Document(itext.PageSize.A4, 50, 50, 70, 70)
itextpdf.PdfWriter.getInstance(doc,outf)

doc.open()

#doc.add( itext.Paragraph( "Hello World." ) )
doc.add( itext.Paragraph( createChunkJP( "こんにちは世界." ) ) )

doc.close()

itext-paulo-149.jar,iTextAsian.jar にCLASSPATHが通っていることを確認して、実行。

jython jpHelloWorld.py

結果のPDF

 Twitter
follow me on Twitter
 Categories