SwingでiTextを利用して一覧表を作成
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfPageEventHelper;
import com.itextpdf.text.pdf.PdfWriter;
public class PdfTorihikiMeisai extends JFrame {
private JPanel contentPane;
private JTextField textField;
private JTextField textField_1;
private ResultSet rs;
private JTextField textField_2;
private JTextField textField_3;
private JTextField textField_4;
private JTextField textField_5;
private JTextField textField_6;
private JTextField textField_7;
private int sttcode=0;
private int endcode=0;
private int sttcode2=0;
private int endcode2=0;
private int sttcode3=0;
private int endcode3=0;
private int sttcode4=0;
private int endcode4=0;
private String PathName ="c:\\sample\\pdftorihikimeisai.pdf";
private String table[][];
//レコード数
private int num_line;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
PdfTorihikiMeisai frame = new PdfTorihikiMeisai();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public PdfTorihikiMeisai() {
setTitle("PdfTorihikiMeisai");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setBounds(100, 100, 450, 269);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
Label label = new Label("取引明細Pdf一覧表");
label.setBackground(new Color(255, 182, 193));
label.setAlignment(Label.CENTER);
label.setBounds(10, 10, 152, 23);
contentPane.add(label);
Label label_1 = new Label("取引先");
label_1.setBackground(new Color(72, 209, 204));
label_1.setAlignment(Label.CENTER);
label_1.setBounds(10, 59, 69, 19);
contentPane.add(label_1);
textField = new JTextField();
textField.setBounds(89, 59, 73, 19);
textField.setDocument( new TextTypeLimit(TextType.NUMERIC,4));
textField.setHorizontalAlignment(SwingConstants.RIGHT);
textField.setText("0");
textField.addFocusListener(new FocusAdapter() {
@Override public void focusGained(FocusEvent e) {
((JTextField) e.getComponent()).selectAll();
}
});
textField.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
}
@Override
public void keyPressed(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
if (e.getKeyCode() == KeyEvent.VK_ENTER){
textField_1.requestFocus();
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
}
});
contentPane.add(textField);
Label label_2 = new Label("~");
label_2.setAlignment(Label.CENTER);
label_2.setBounds(168, 59, 21, 23);
contentPane.add(label_2);
textField_1 = new JTextField();
textField_1.setBounds(195, 59, 73, 19);
textField_1.setDocument( new TextTypeLimit(TextType.NUMERIC,4));
textField_1.setHorizontalAlignment(SwingConstants.RIGHT);
textField_1.setText("9999");
textField_1.addFocusListener(new FocusAdapter() {
@Override public void focusGained(FocusEvent e) {
((JTextField) e.getComponent()).selectAll();
}
});
textField_1.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
}
@Override
public void keyPressed(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
if (e.getKeyCode() == KeyEvent.VK_ENTER){
textField_2.requestFocus();
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
}
});
contentPane.add(textField_1);
Label label_3 = new Label("取引日");
label_3.setBackground(new Color(72, 209, 204));
label_3.setAlignment(Label.CENTER);
label_3.setBounds(10, 84, 69, 19);
contentPane.add(label_3);
textField_2 = new JTextField();
textField_2.setHorizontalAlignment(SwingConstants.RIGHT);
textField_2.setBounds(89, 84, 73, 19);
textField_2.setDocument( new TextTypeLimit(TextType.NUMERIC,8));
textField_2.setText("0");
textField_2.addFocusListener(new FocusAdapter() {
@Override public void focusGained(FocusEvent e) {
((JTextField) e.getComponent()).selectAll();
}
});
textField_2.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
}
@Override
public void keyPressed(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
if (e.getKeyCode() == KeyEvent.VK_ENTER){
textField_3.requestFocus();
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
}
});
contentPane.add(textField_2);
textField_3 = new JTextField();
textField_3.setHorizontalAlignment(SwingConstants.RIGHT);
textField_3.setBounds(195, 84, 73, 19);
textField_3.setDocument( new TextTypeLimit(TextType.NUMERIC,8));
textField_3.setText("99999999");
textField_3.addFocusListener(new FocusAdapter() {
@Override public void focusGained(FocusEvent e) {
((JTextField) e.getComponent()).selectAll();
}
});
textField_3.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
}
@Override
public void keyPressed(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
if (e.getKeyCode() == KeyEvent.VK_ENTER){
textField_4.requestFocus();
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
}
});
contentPane.add(textField_3);
Label label_4 = new Label("支払先");
label_4.setBackground(new Color(72, 209, 204));
label_4.setAlignment(Label.CENTER);
label_4.setBounds(10, 109, 69, 19);
contentPane.add(label_4);
Label label_5 = new Label("~");
label_5.setAlignment(Label.CENTER);
label_5.setBounds(168, 84, 21, 23);
contentPane.add(label_5);
textField_4 = new JTextField();
textField_4.setHorizontalAlignment(SwingConstants.RIGHT);
textField_4.setBounds(89, 109, 73, 19);
textField_4.setDocument( new TextTypeLimit(TextType.NUMERIC,4));
textField_4.setText("0");
textField_4.addFocusListener(new FocusAdapter() {
@Override public void focusGained(FocusEvent e) {
((JTextField) e.getComponent()).selectAll();
}
});
textField_4.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
}
@Override
public void keyPressed(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
if (e.getKeyCode() == KeyEvent.VK_ENTER){
textField_5.requestFocus();
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
}
});
contentPane.add(textField_4);
textField_5 = new JTextField();
textField_5.setHorizontalAlignment(SwingConstants.RIGHT);
textField_5.setBounds(195, 109, 73, 19);
textField_5.setDocument( new TextTypeLimit(TextType.NUMERIC,4));
textField_5.setText("9999");
textField_5.addFocusListener(new FocusAdapter() {
@Override public void focusGained(FocusEvent e) {
((JTextField) e.getComponent()).selectAll();
}
});
textField_5.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
}
@Override
public void keyPressed(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
if (e.getKeyCode() == KeyEvent.VK_ENTER){
textField_6.requestFocus();
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
}
});
contentPane.add(textField_5);
Label label_6 = new Label("~");
label_6.setAlignment(Label.CENTER);
label_6.setBounds(168, 109, 21, 23);
contentPane.add(label_6);
Label label_7 = new Label("支払日");
label_7.setBackground(new Color(72, 209, 204));
label_7.setAlignment(Label.CENTER);
label_7.setBounds(10, 134, 69, 19);
contentPane.add(label_7);
textField_6 = new JTextField();
textField_6.setHorizontalAlignment(SwingConstants.RIGHT);
textField_6.setBounds(89, 134, 73, 19);
textField_6.setDocument( new TextTypeLimit(TextType.NUMERIC,8));
textField_6.setText("0");
textField_6.addFocusListener(new FocusAdapter() {
@Override public void focusGained(FocusEvent e) {
((JTextField) e.getComponent()).selectAll();
}
});
textField_6.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
}
@Override
public void keyPressed(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
if (e.getKeyCode() == KeyEvent.VK_ENTER){
textField_7.requestFocus();
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
}
});
contentPane.add(textField_6);
textField_7 = new JTextField();
textField_7.setHorizontalAlignment(SwingConstants.RIGHT);
textField_7.setBounds(195, 134, 73, 19);
textField_7.setDocument( new TextTypeLimit(TextType.NUMERIC,8));
textField_7.setText("99999999");
textField_7.addFocusListener(new FocusAdapter() {
@Override public void focusGained(FocusEvent e) {
((JTextField) e.getComponent()).selectAll();
}
});
textField_7.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
}
@Override
public void keyPressed(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
if (e.getKeyCode() == KeyEvent.VK_ENTER){
textField.requestFocus();
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO 自動生成されたメソッド・スタブ
}
});
contentPane.add(textField_7);
Label label_8 = new Label("~");
label_8.setAlignment(Label.CENTER);
label_8.setBounds(168, 134, 21, 23);
contentPane.add(label_8);
JButton button = new JButton("印 刷");
button.setBounds(89, 184, 91, 21);
button.addActionListener(new ActionListener() {
@SuppressWarnings("static-access")
public void actionPerformed(ActionEvent e) {
try {
sttcode =Integer.parseInt(textField.getText());
endcode =Integer.parseInt(textField_1.getText());
sttcode2 =Integer.parseInt(textField_2.getText());
endcode2 =Integer.parseInt(textField_3.getText());
sttcode3 =Integer.parseInt(textField_4.getText());
endcode3 =Integer.parseInt(textField_5.getText());
sttcode4 =Integer.parseInt(textField_6.getText());
endcode4 =Integer.parseInt(textField_7.getText());
} catch (Exception e2) {
JOptionPane.showMessageDialog(button,"範囲指定が間違っています。",
"インフォメーション", JOptionPane.INFORMATION_MESSAGE);
textField.requestFocus();
return;
}
if (sttcode > endcode) {
JOptionPane.showMessageDialog(button,"取引先範囲指定が間違っています。",
"インフォメーション", JOptionPane.INFORMATION_MESSAGE);
textField.requestFocus();
return;
}
if (sttcode2 > endcode2) {
JOptionPane.showMessageDialog(button,"取引日範囲指定が間違っています。",
"インフォメーション", JOptionPane.INFORMATION_MESSAGE);
textField.requestFocus();
return;
}
if (sttcode3 > endcode3) {
JOptionPane.showMessageDialog(button,"支払先範囲指定が間違っています。",
"インフォメーション", JOptionPane.INFORMATION_MESSAGE);
textField.requestFocus();
return;
}
if (sttcode4 > endcode4) {
JOptionPane.showMessageDialog(button,"支払日範囲指定が間違っています。",
"インフォメーション", JOptionPane.INFORMATION_MESSAGE);
textField.requestFocus();
return;
}
SetTable();
CreatePdf createPdf = new CreatePdf();
createPdf.execute();
try {
if ((new File(PathName)).exists()) {
Process p = Runtime
.getRuntime()
.exec("rundll32 url.dll,FileProtocolHandler " + PathName);
p.waitFor();
} else {
JOptionPane.showMessageDialog(contentPane, "File is not exists",
"インフォメーション", JOptionPane.INFORMATION_MESSAGE);
//System.out.println("File is not exists");
}
//JOptionPane.showMessageDialog(contentPane, "Done",
// "インフォメーション", JOptionPane.INFORMATION_MESSAGE);
//System.out.println("Done");
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
contentPane.add(button);
JButton button_1 = new JButton("終 了");
button_1.setBounds(195, 184, 91, 21);
button_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//System.out.println("ENDキーが押された");
//System.exit(0);
dispose();
}
});
contentPane.add(button_1);
JButton btnPdf = new JButton("Pdf表示");
btnPdf.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
if ((new File(PathName)).exists()) {
Process p = Runtime
.getRuntime()
.exec("rundll32 url.dll,FileProtocolHandler " + PathName);
p.waitFor();
} else {
JOptionPane.showMessageDialog(contentPane, "File is not exists",
"インフォメーション", JOptionPane.INFORMATION_MESSAGE);
//System.out.println("File is not exists");
}
//JOptionPane.showMessageDialog(contentPane, "Done",
// "インフォメーション", JOptionPane.INFORMATION_MESSAGE);
//System.out.println("Done");
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
btnPdf.setBounds(298, 184, 91, 21);
contentPane.add(btnPdf);
}
@SuppressWarnings("static-access")
private void SetTable() {
Connect Con = new Connect();
Con.open();
String Str ="";
Str = "SELECT 取引明細.*,coalesce(取引先.取引先名,'') as torihikisakimei,coalesce(支払先.取引先名,'') as shiharaisakimei FROM 取引明細";
Str += " left outer join 取引先マスター as 取引先 on 取引先.取引先コード = 取引明細.取引先";
Str += " left outer join 取引先マスター as 支払先 on 支払先.取引先コード = 取引明細.支払先";
Str += " Where 取引先>=" + sttcode;
Str += " and 取引先<=" + endcode;
Str += " and 取引日>=" + sttcode2;
Str += " and 取引日<=" + endcode2;
Str += " and 支払先>=" + sttcode3;
Str += " and 支払先<=" + endcode3;
Str += " and 支払日>=" + sttcode4;
Str += " and 支払日<=" + endcode4;
Str += " order By 取引日 ";
String StrCount ="";
StrCount = "SELECT coalesce(count(*),0) as 件数 FROM 取引明細";
StrCount += " Where 取引先>=" + sttcode;
StrCount += " and 取引先<=" + endcode;
StrCount += " and 取引日>=" + sttcode2;
StrCount += " and 取引日<=" + endcode2;
StrCount += " and 支払先>=" + sttcode3;
StrCount += " and 支払先<=" + endcode3;
StrCount += " and 支払日>=" + sttcode4;
StrCount += " and 支払日<=" + endcode4;
try {
//データ取得
int Count=0;
rs = Con.stmt.executeQuery(StrCount);
while (rs.next()) {
Count=rs.getInt("件数");
}
rs.close();
//System.out.println(Count);;
table = new String[Count][10];
for(String[] x: table){
java.util.Arrays.fill(x,"");
}
num_line=0;
rs = Con.stmt.executeQuery(Str);
while (rs.next()) {
String F01 = null;
table[num_line][0] = rs.getString("取引日").substring(0,4) +"-" + rs.getString("取引日").substring(4,6) + "-" + rs.getString("取引日").substring(6,8);
String F02 =rs.getString("摘要");
table[num_line][1] =rs.getString("摘要");
String F03=null;
table[num_line][2] = F03.format("%,d",rs.getInt("入金額"));
String F04=null;
table[num_line][3] = F04.format("%,d",rs.getInt("出金額"));
String F05 = null;
table[num_line][4] = F05.format("%04d",rs.getInt("取引先"));
String F06= rs.getString("torihikisakimei");
table[num_line][5] = F06;
String F07 = null;
table[num_line][6] = F07.format("%04d",rs.getInt("支払先"));
if (rs.getInt("支払先")==0) {
table[num_line][6] ="";
}
String F08=rs.getString("shiharaisakimei");
table[num_line][7] = F08;
String F09 = null;
if (rs.getInt("支払日") < 10000000) {
table[num_line][8] ="";
} else {
table[num_line][8] = rs.getString("支払日").substring(0,4) +"-" + rs.getString("支払日").substring(4,6) + "-" + rs.getString("支払日").substring(6,8);
}
String F10= null;
table[num_line][9]= F10.format("%05d",rs.getInt("明細番号"));
num_line = num_line + 1;
}
rs.close();
}catch(SQLException ex) {
JOptionPane.showMessageDialog(contentPane, "選択に失敗しました。",
"インフォメーション", JOptionPane.INFORMATION_MESSAGE);
if(rs!=null)
try{rs.close();}catch(Exception e2){ex.printStackTrace();}
ex.printStackTrace();
return;
}
Con.close();
}
class CreatePdf extends PdfPageEventHelper {
//-----------------------------------
// フォント
//-----------------------------------
/** 平成明朝体 */
private static final String MINCHO = "HeiseiMin-W3";
/** 平成角ゴシック体. */
private static final String GOTHIC = "HeiseiKakuGo-W5";
/** 横書き指定 */
private static final String HORIZONTAL = "UniJIS-UCS2-H";
/** 縦書き指定 */
private static final String VERTICAL = "UniJIS-UCS2-V";
/** 横書き指定 & 英数を半角幅で印字 */
private static final String HORIZONTAL_HW = "UniJIS-UCS2-HW-H";
/** 縦書き指定 & 英数を半角幅で印字 */
private static final String VERTICAL_HW = "UniJIS-UCS2-HW-V";
/** ベースフォント 明朝体 */
private BaseFont mincho = null;
/** ベースフォント ゴシック体 */
private BaseFont gothic = null;
private Font mincho15 = null;
/** 全ページ数 */
private int pageCount = 0;
/** 1ページリスト表示行数 */
private final int LIST_ROW = 40;
/** 明細一覧テーブルの列幅定義 */
float widthC[] = { 8, 30, 11, 11, 20, 20,10 };
public void execute() {
//文書オブジェクトを生成 rotate指定で横書き
Document doc = new Document(PageSize.A4.rotate(), 10, 10, 50, 10);
//出力先(アウトプットストリーム)の生成
FileOutputStream fos = null;
try {
fos = new FileOutputStream(PathName);
} catch (FileNotFoundException e2) {
// TODO 自動生成された catch ブロック
e2.printStackTrace();
}
//アウトプットストリームをPDFWriterに設定
PdfWriter pdfwriter = null;
try {
pdfwriter = PdfWriter.getInstance(doc, fos);
//ページ制御
pdfwriter.setPageEvent(this);
} catch (DocumentException e2) {
// TODO 自動生成された catch ブロック
e2.printStackTrace();
}
//フォントの設定
Font font = null;
Font font8 = null;
Font fontB =null;
Font fontU =null;
try {
font = new Font(BaseFont.createFont("HeiseiKakuGo-W5",
"UniJIS-UCS2-H",BaseFont.NOT_EMBEDDED),9);
font8 = new Font(BaseFont.createFont("HeiseiKakuGo-W5",
"UniJIS-UCS2-H",BaseFont.NOT_EMBEDDED),8);
fontB = new Font(BaseFont.createFont("HeiseiKakuGo-W5",
"UniJIS-UCS2-H",BaseFont.NOT_EMBEDDED),9, Font.BOLD);
fontU= new Font(BaseFont.createFont("HeiseiKakuGo-W5",
"UniJIS-UCS2-H",BaseFont.NOT_EMBEDDED),9, Font.UNDERLINE);
} catch (DocumentException | IOException e2) {
// TODO 自動生成された catch ブロック
e2.printStackTrace();
}
//文章オブジェクト オープン
doc.open();
try {
Paragraph p = new Paragraph();
int x = 0;
//明細行の表を作成(7列)
PdfPTable pdfPTable = new PdfPTable(8);
pdfPTable.setHorizontalAlignment(Element.ALIGN_CENTER);
/** テーブルの列幅定義 */
float width1[] = { 8, 40, 8, 8, 17, 17,8,8 };
pdfPTable.setWidths(width1);
pdfPTable.setWidthPercentage(100f);
// ページ数の算出
pageCount = num_line%LIST_ROW == 0 ?
num_line/LIST_ROW : num_line/LIST_ROW +1 ;
for (int i = 0; i < num_line; i++) {
if ((i == 0 || i % LIST_ROW == 0)) {
PdfPCell cell1_01 = new PdfPCell(new Paragraph("取引日", font));
cell1_01.setHorizontalAlignment(Element.ALIGN_CENTER);
PdfPCell cell1_02 = new PdfPCell(new Paragraph("摘要", font));
cell1_02.setHorizontalAlignment(Element.ALIGN_LEFT);
PdfPCell cell1_03 = new PdfPCell(new Paragraph("取引額", font));
cell1_03.setHorizontalAlignment(Element.ALIGN_RIGHT);
PdfPCell cell1_04 = new PdfPCell(new Paragraph("出金額", font));
cell1_04.setHorizontalAlignment(Element.ALIGN_RIGHT);
PdfPCell cell1_05 = new PdfPCell(new Paragraph("取引先", font));
cell1_05.setHorizontalAlignment(Element.ALIGN_LEFT);
PdfPCell cell1_06 = new PdfPCell(new Paragraph("支払先", font));
cell1_06.setHorizontalAlignment(Element.ALIGN_LEFT);
PdfPCell cell1_07 = new PdfPCell(new Paragraph("支払日", font));
cell1_07.setHorizontalAlignment(Element.ALIGN_CENTER);
PdfPCell cell1_08 = new PdfPCell(new Paragraph("明細番号", font));
cell1_08.setHorizontalAlignment(Element.ALIGN_RIGHT);
pdfPTable.addCell(cell1_01);
pdfPTable.addCell(cell1_02);
pdfPTable.addCell(cell1_03);
pdfPTable.addCell(cell1_04);
pdfPTable.addCell(cell1_05);
pdfPTable.addCell(cell1_06);
pdfPTable.addCell(cell1_07);
pdfPTable.addCell(cell1_08);
}
PdfPCell cell1_01 = new PdfPCell(new Paragraph(table[i][0], font));
cell1_01.setHorizontalAlignment(Element.ALIGN_CENTER);
PdfPCell cell1_02 = new PdfPCell(new Paragraph(table[i][1], font8));
cell1_02.setHorizontalAlignment(Element.ALIGN_LEFT);
PdfPCell cell1_03 = new PdfPCell(new Paragraph(table[i][2], font));
cell1_03.setHorizontalAlignment(Element.ALIGN_RIGHT);
PdfPCell cell1_04 = new PdfPCell(new Paragraph(table[i][3], font));
cell1_04.setHorizontalAlignment(Element.ALIGN_RIGHT);
PdfPCell cell1_05 = new PdfPCell(new Paragraph(table[i][4] + " " + table[i][5], font));
cell1_05.setHorizontalAlignment(Element.ALIGN_LEFT);
PdfPCell cell1_06 = new PdfPCell(new Paragraph(table[i][6] + " " + table[i][7], font));
cell1_06.setHorizontalAlignment(Element.ALIGN_LEFT);
PdfPCell cell1_07 = new PdfPCell(new Paragraph(table[i][8], font));
cell1_07.setHorizontalAlignment(Element.ALIGN_CENTER);
PdfPCell cell1_08 = new PdfPCell(new Paragraph(table[i][9], font));
cell1_08.setHorizontalAlignment(Element.ALIGN_RIGHT);
pdfPTable.addCell(cell1_01);
pdfPTable.addCell(cell1_02);
pdfPTable.addCell(cell1_03);
pdfPTable.addCell(cell1_04);
pdfPTable.addCell(cell1_05);
pdfPTable.addCell(cell1_06);
pdfPTable.addCell(cell1_07);
pdfPTable.addCell(cell1_08);
if(i != 0 && i % LIST_ROW == LIST_ROW-1) {
// 改頁
doc.newPage();
}
}
doc.add(pdfPTable);
} catch (DocumentException e1) {
JOptionPane.showMessageDialog(contentPane, "tableが、ありません。",
"インフォメーション", JOptionPane.INFORMATION_MESSAGE);
// TODO 自動生成された catch ブロック
e1.printStackTrace();
} catch (Exception e1) {
JOptionPane.showMessageDialog(contentPane, "pdfファイル作成できません。",
"インフォメーション", JOptionPane.INFORMATION_MESSAGE);
// TODO 自動生成された catch ブロック
e1.printStackTrace();
}
//文章オブジェクト クローズ
doc.close();
//PDFWriter クローズ
pdfwriter.close();
//JOptionPane.showMessageDialog(contentPane, "pdfファイル出力完了",
// "インフォメーション", JOptionPane.INFORMATION_MESSAGE);
}
/**
* 改ページ処理。
* このメソッドはページ作成終了時に呼び出される
*
* @param writer PDFライターオブジェクト
* @param doc ドキュメントオブジェクト
*/
@Override
public void onEndPage(PdfWriter pdfwriter, Document doc){
try {
//フォントの設定
Font font = null;
Font fontB =null;
Font fontU =null;
try {
font = new Font(BaseFont.createFont("HeiseiKakuGo-W5",
"UniJIS-UCS2-H",BaseFont.NOT_EMBEDDED),9);
fontB = new Font(BaseFont.createFont("HeiseiKakuGo-W5",
"UniJIS-UCS2-H",BaseFont.NOT_EMBEDDED),9, Font.BOLD);
fontU= new Font(BaseFont.createFont("HeiseiKakuGo-W5",
"UniJIS-UCS2-H",BaseFont.NOT_EMBEDDED),9, Font.UNDERLINE);
} catch (DocumentException | IOException e2) {
// TODO 自動生成された catch ブロック
e2.printStackTrace();
}
// -------------------------
// タイトルテーブル
// -------------------------
float H_TABLE_COLUMN_WIDH[]= {1, 3.5f};
PdfPTable htable = new PdfPTable(H_TABLE_COLUMN_WIDH.length);
PdfPCell cell = null;
// テーブルの設定
htable.getDefaultCell().setPadding(0f);
htable.getDefaultCell().setLeading(16f, 0f);
// テーブル全体幅の設定
htable.setTotalWidth(doc.getPageSize().getWidth() - 80);
// テーブル列幅の設定
htable.setWidths(H_TABLE_COLUMN_WIDH);
// その他設定
htable.getDefaultCell().setBorder(0);
htable.setHorizontalAlignment(Element.ALIGN_CENTER);
htable.setLockedWidth(true);
// タイトル
cell = new PdfPCell(new Phrase(getTitle(pdfwriter, doc), fontB));
cell.setColspan(H_TABLE_COLUMN_WIDH.length);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setPaddingBottom(20f);
cell.setBorder(0);
htable.addCell(cell);
htable.writeSelectedRows(0, -1, 40, 570, pdfwriter.getDirectContent());
if (pdfwriter.getPageNumber() == 1) {
}
} catch (Throwable e) {
e.printStackTrace();
}
}
/**
* ヘッダタイトルを取得する。
*
* @param writer PDFライターオブジェクト
* @param doc ドキュメントオブジェクト
*/
private String getTitle(PdfWriter pdfwriter, Document doc) {
StringBuffer sb = new StringBuffer();
sb.append("* 取引明細一覧表 *");
sb.append("(");
sb.append(pdfwriter.getPageNumber());
sb.append("/");
sb.append(pageCount);
sb.append("ページ)");
return sb.toString();
}
}
}