ねもぷらす

ふぁいんでぃんぐねもの日記。プログラミングとか育児とか

iTextPDF を使って PDFファイルを作成する(書きかけ)

import java.io.FileOutputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.FileNotFoundException;
import com.itextpdf.text.Font;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Document;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.CMYKColor;
import com.itextpdf.text.pdf.PdfContentByte;
import java.awt.Graphics2D;

public class testJava {
    public static void main (String[] arg) {
        FileOutputStream out = null;
        BufferedOutputStream bout = null;
        PdfWriter writer = null;
        Document doc = null;
        System.out.println("...start");
        try {
            out  = new FileOutputStream("test.pdf");
            bout = new BufferedOutputStream(out);
            doc  = new Document(new Rectangle(0,0,500,500));
            writer = PdfWriter.getInstance(doc, bout);
            doc.open();
            // 文字の出力
            BaseFont mincho = BaseFont.createFont("HeiseiMin-W3", "UniJIS-UCS2-HW-H",false);
            Font f1 = new Font(mincho, 11);
            f1.setColor(CMYKColor.RED);
            doc.add(new Paragraph("hello, world", f1));
            // 図形の出力
            PdfContentByte cb = writer.getDirectContent();
            cb.saveState();
            cb.concatCTM(1, 0, 0, 1, 50, 250);
            Graphics2D g2 = cb.createGraphics(200, 200);
            g2.setColor(java.awt.Color.LIGHT_GRAY);
            g2.fillRect(0,0,150,150);
            g2.setColor(java.awt.Color.BLUE);
            g2.fillOval(50,50,50,50);
            g2.dispose();
            cb.restoreState();
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            doc.close();
        }
        System.out.println("...end");
    }
}

java は言語としては扱いやすいけど、ヒアドキュメントが使えないから嫌い。
あと環境が複雑すぎて理解できてない。