Thu, January 27, 2005
iTextを使ってPDFを生成する(jython,pdf)
仕事で作るドキュメントはPDF化して渡すことが多いです。 MacOSXのように標準で、PDF出力がついてるのはすごく便利なんだけど、 請求データのように、データをデータベースとかXMLで管理しているような場合、 そこから、必要なデータだけをひっぱり出してきてそれを適当に整形して PDF出力できたらなぁと思う。
そんなときに、iText+Jythonの組み合わせで、PDF出力を扱うことができれば、 便利かも!と思って、試してみました。
事前準備
JavaにはPDFを生成するオープンソースのライブラリとして iText があるので、これを使う。
- itext-paulo-149.jar
- iTextAsian.jar
を入手して、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
こんにちは世界
次に日本語で、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