Java iText
インストール環境 | : | OS:Microsoft Windows Me |
インストール元 | : | http://itext.sourceforge.net/downloads/ |
ファイル | : | iText.jar 02-May-2003 07:16 649k |
: | iTextAsian.jar 02-May-2003 07:16 322k |
|
||||||||||||||||||||||||
実行環境 | ||||||||||||||||||||||||
OS:Microsoft Windows Me | ||||||||||||||||||||||||
明日のための其の壱 PDFの書き込み(PDFWriterオブジェクト) Sample1.pdf | ||||||||||||||||||||||||
C:\javaに下記ファイル作成しJavaクラスの実行 | ||||||||||||||||||||||||
ソースファイル:C:\java\Sample1.java | ||||||||||||||||||||||||
import java.io.FileOutputStream; import com.lowagie.text.*; import com.lowagie.text.pdf.PdfWriter; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.BaseFont; public class Sample1 { public static void main(String[] args) { try { // Document,PdfWriterオブジェクトを作成 Document document = new Document(PageSize.A4); PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream("Sample1.pdf")); document.open(); // キャンバスを取得 PdfContentByte cb = writer.getDirectContent(); // 文字列を描画 BaseFont bf = BaseFont.createFont("Times-Roman", "Cp1252", false); cb.beginText(); cb.setFontAndSize(bf, 16); cb.showTextAligned(PdfContentByte.ALIGN_LEFT,"Hello PDF !", 100, 700, 0); cb.endText(); document.close(); } catch(Exception e) { e.printStackTrace(); } } } |
||||||||||||||||||||||||
コンパイルファイル:C:\java\cpl.bat | ||||||||||||||||||||||||
set classpath=.;C:\java\iText.jar;C:\java\iTextAsian.jar C:\j2sdk1.4.1_02\bin\javac -deprecation Sample1.java pause |
||||||||||||||||||||||||
実行ファイル:C:\java\run.bat | ||||||||||||||||||||||||
set classpath=.;C:\java\iText.jar;C:\java\iTextAsian.jar C:\j2sdk1.4.1_02\bin\java Sample1 pause |
||||||||||||||||||||||||
実行結果:DOSプロンプト | ||||||||||||||||||||||||
C:\java>set classpath=.;C:\java\iText.jar;C:\java\iTextAsian.jar C:\java>C:\j2sdk1.4.1_02\bin\java Sample1 C:\java>pause 続けるにはどれかキーを押してください . . . |
||||||||||||||||||||||||
明日のための其の弐 PDFの書き込み(Documentオブジェクト) Sample2.pdf | ||||||||||||||||||||||||
C:\javaに下記ファイル作成しJavaクラスの実行 | ||||||||||||||||||||||||
ソースファイル:C:\java\Sample2.java | ||||||||||||||||||||||||
import java.awt.Color; import java.io.FileOutputStream; import com.lowagie.text.*; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfWriter; public class Sample2 { // 明細用データ private static String[][] data = { {"300-01", "ファイズドライバー", "2", "個", "300", "600"}, {"300-02", "ファイズエッジ", "1", "個", "300", "300"}, {"200-01", "ファイズフォン(ミッションメモリー付)", "2", "個", "200", "400"}, {"200-02", "ファイズポインター", "1", "個", "200", "200"}, {"200-03", "ファイズショット", "1", "個", "200", "200"}, {"200-04", "スマートパッド", "1", "個", "200", "200"} }; public static void main(String[] args) { try{ // 明朝体,ゴシック体フォントを設定 BaseFont mincho = BaseFont.createFont("HeiseiMin-W3", "UniJIS-UCS2-HW-H",false); BaseFont gothic = BaseFont.createFont("HeiseiKakuGo-W5", "UniJIS-UCS2-H",false); Font min10 = new Font(mincho, 10); Font goth10 = new Font(gothic, 10); // Documentオブジェクトを生成 Document document = new Document(PageSize.A4); // PdfWriterオブジェクトを生成 PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("Sample2.pdf")); // ヘッダー/フッターを設定 HeaderFooter header = new HeaderFooter(new Phrase(new Chunk("2003/05/18", new Font(mincho, 10, Font.UNDERLINE))), false); header.setAlignment(Element.ALIGN_RIGHT); header.setBorderColor(Color.white); document.setHeader(header); HeaderFooter footer = new HeaderFooter(new Paragraph("子供達の代表", new Font(mincho, 12)), false); footer.setAlignment(Element.ALIGN_CENTER); document.setFooter(footer); // ドキュメントをオープン document.open(); // 文を挿入 Paragraph para1 = new Paragraph("請 求 書", new Font(gothic, 20, Font.BOLD)); para1.setAlignment(Element.ALIGN_CENTER); document.add(para1); Paragraph para2 = new Paragraph(50, "ママ 様", new Font(mincho, 15, Font.UNDERLINE)); para2.setAlignment(Element.ALIGN_LEFT); document.add(para2); Paragraph para3 = new Paragraph(40, "下記の通り請求いたします。", new Font(mincho, 12)); para3.setAlignment(Element.ALIGN_CENTER); document.add(para3); // 表を出力 Table tbl_hd = new Table(2); tbl_hd.setDefaultHorizontalAlignment(Element.ALIGN_CENTER); tbl_hd.setDefaultVerticalAlignment(Element.ALIGN_MIDDLE); tbl_hd.setPadding(4); int widthA[] = {35,65}; tbl_hd.setWidths(widthA); // 各セル幅の比率を設定(パーセント) tbl_hd.setWidth(50); // テーブル全体の大きさを設定(パーセント) Cell cellA1 = new Cell(new Phrase("件名", new Font(gothic, 15))); cellA1.setGrayFill(0.9f); Cell cellA2 = new Cell(new Phrase("合計金額", new Font(gothic, 15))); cellA2.setGrayFill(0.9f); Cell cellA3 = new Cell(new Phrase("1,995円", new Font(mincho, 15))); cellA3.setHorizontalAlignment(Element.ALIGN_RIGHT); tbl_hd.addCell(cellA1); tbl_hd.addCell(new Phrase("ファイズグッズ代", new Font(mincho, 15))); tbl_hd.addCell(cellA2); tbl_hd.addCell(cellA3); document.add(tbl_hd); Paragraph para4 = new Paragraph("明細書", new Font(gothic, 13)); para4.setAlignment(Element.ALIGN_CENTER); document.add(para4); Table tbl_dt = new Table(6); tbl_dt.setDefaultHorizontalAlignment(Element.ALIGN_CENTER); tbl_dt.setDefaultVerticalAlignment(Element.ALIGN_MIDDLE); tbl_dt.setPadding(4); tbl_dt.setOffset(0); int widthC[] = {10,40,10,10,15,15}; tbl_dt.setWidths(widthC); tbl_dt.setWidth(100); Cell cellC1 = new Cell(new Phrase("CODE", goth10)); cellC1.setGrayFill(0.9f); Cell cellC2 = new Cell(new Phrase("品目・摘要", goth10)); cellC2.setGrayFill(0.9f); Cell cellC3 = new Cell(new Phrase("数量", goth10)); cellC3.setGrayFill(0.9f); Cell cellC4 = new Cell(new Phrase("単位", goth10)); cellC4.setGrayFill(0.9f); Cell cellC5 = new Cell(new Phrase("単価", goth10)); cellC5.setGrayFill(0.9f); Cell cellC6 = new Cell(new Phrase("金額", goth10)); cellC6.setGrayFill(0.9f); tbl_dt.addCell(cellC1); tbl_dt.addCell(cellC2); tbl_dt.addCell(cellC3); tbl_dt.addCell(cellC4); tbl_dt.addCell(cellC5); tbl_dt.addCell(cellC6); // 明細行を埋める for(int i = 0; i < data.length; i++){ Cell cell = new Cell(new Phrase(data[i][0], min10)); cell.setHorizontalAlignment(Element.ALIGN_CENTER); tbl_dt.addCell(cell); cell = new Cell(new Phrase(data[i][1], min10)); cell.setHorizontalAlignment(Element.ALIGN_LEFT); tbl_dt.addCell(cell); cell = new Cell(new Phrase(data[i][2], min10)); cell.setHorizontalAlignment(Element.ALIGN_RIGHT); tbl_dt.addCell(cell); cell = new Cell(new Phrase(data[i][3], min10)); cell.setHorizontalAlignment(Element.ALIGN_CENTER); tbl_dt.addCell(cell); cell = new Cell(new Phrase(data[i][4], min10)); cell.setHorizontalAlignment(Element.ALIGN_RIGHT); tbl_dt.addCell(cell); cell = new Cell(new Phrase(data[i][5], min10)); cell.setHorizontalAlignment(Element.ALIGN_RIGHT); tbl_dt.addCell(cell); } //空白行を作成 for (int i = data.length; i < 10; i++) { for (int j = 0; j < 6; j++) { tbl_dt.addCell(Cell.EMPTY_CELL); } } Cell cellC7 = new Cell(new Phrase("小計", goth10)); cellC7.setGrayFill(0.9f); cellC7.setColspan(5); Cell cellC8 = new Cell(new Phrase("1,900", min10)); cellC8.setHorizontalAlignment(Element.ALIGN_RIGHT); Cell cellC9 = new Cell(new Phrase("消費税等", goth10)); cellC9.setGrayFill(0.9f); cellC9.setColspan(5); Cell cellC10 = new Cell(new Phrase("95", min10)); cellC10.setHorizontalAlignment(Element.ALIGN_RIGHT); Cell cellC11 = new Cell(new Phrase("合計", goth10)); cellC11.setGrayFill(0.9f); cellC11.setColspan(5); Cell cellC12 = new Cell(new Phrase("1,995", min10)); cellC12.setHorizontalAlignment(Element.ALIGN_RIGHT); Cell cellC13 = new Cell(new Phrase("備考", goth10)); cellC13.setGrayFill(0.9f); cellC13.setRowspan(3); cellC13.setVerticalAlignment(Element.ALIGN_TOP); Cell cellC14 = new Cell(new Phrase("数量が2個分は兄弟分", goth10)); cellC14.setRowspan(3); cellC14.setColspan(5); cellC14.setHorizontalAlignment(Element.ALIGN_LEFT); tbl_dt.addCell(cellC7); tbl_dt.addCell(cellC8); tbl_dt.addCell(cellC9); tbl_dt.addCell(cellC10); tbl_dt.addCell(cellC11); tbl_dt.addCell(cellC12); tbl_dt.addCell(cellC13); tbl_dt.addCell(cellC14); document.add(tbl_dt); // ドキュメントをクローズ document.close(); } catch(Exception e){ e.printStackTrace(); } } } |
||||||||||||||||||||||||
コンパイルファイル、実行ファイル、実行結果は略 |