1. 程式人生 > >java使用itext,製作pdf檔案

java使用itext,製作pdf檔案

5 畫table,PdfTableTest_04.java檔案

package com.test;

import java.io.File;
import java.io.FileOutputStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Map;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.Element;
import
com.itextpdf.text.Font; import com.itextpdf.text.PageSize; import com.itextpdf.text.Paragraph; import com.itextpdf.text.Rectangle; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPTable; import com.itextpdf.text.pdf.PdfWriter; import com.sun.org.apache.regexp.internal.recompile; /** * 職工流水賬pdf檔案,表格 * 動態畫 * @author
yuhf * */
public class PdfTableTest_04 { /** * @throws Exception */ public void addTable(String path,ZGLSZBean zBean) throws Exception{ String ORGNAME = ""; String OCNAME = ""; Rectangle rectangle = new Rectangle(PageSize.A4); //設定紙張的大小物件 Document doc = new
Document(rectangle.rotate()); //紙張橫向 //建立BaseFont物件,指明字型,編碼方式,是否嵌入 BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED); //建立Font物件,將基礎字型物件,字型大小,字型風格 Font font=new Font(bf,10,Font.NORMAL); Font font1=new Font(bf,15,Font.BOLD); //建立檔案 File file = new File(path); PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(file)); //設定頁首頁尾 Rectangle rect = new Rectangle(36, 54, 520, 788); rect.setBorderColor(BaseColor.BLACK); writer.setBoxSize("art", rect); //建立PdfTable物件 10列表格 PdfPTable table=new PdfPTable(11); //設定各列的列寬 table.setTotalWidth(new float[]{100,100,100,90,100,100,100,100,120,120,100}); //表格與標題空40 左右高度 PdfPCell cell_0 = mergeCol("", font, 11); cell_0.setMinimumHeight(20); cell_0.setBorder(Rectangle.NO_BORDER); table.addCell(cell_0); //單位賬戶 PdfPCell cell = new PdfPCell(); PdfPCell pdfCell_dwzh = getPDFCell("單位賬戶:",font); pdfCell_dwzh.setBorder(Rectangle.NO_BORDER); //去除邊框 table.addCell(pdfCell_dwzh); cell=mergeCol(zBean.getSncode(), font, 3); cell.setBorder(Rectangle.NO_BORDER);//去除邊框 cell.setHorizontalAlignment(Element.ALIGN_LEFT); table.addCell(cell); //--1 //單位名稱: PdfPCell pdfCell_dwmc = getPDFCell("單位名稱:",font); pdfCell_dwmc.setBorder(Rectangle.NO_BORDER); table.addCell(pdfCell_dwmc); cell=mergeCol(zBean.getSnname(), font, 3); cell.setBorder(Rectangle.NO_BORDER); cell.setHorizontalAlignment(Element.ALIGN_LEFT); table.addCell(cell); //單位名稱: PdfPCell pdfCell_zgzh = getPDFCell("職工賬號:",font); pdfCell_zgzh.setBorder(Rectangle.NO_BORDER); table.addCell(pdfCell_zgzh); cell=mergeCol(zBean.getSpcode(), font, 2); cell.setBorder(Rectangle.NO_BORDER); cell.setHorizontalAlignment(Element.ALIGN_LEFT); table.addCell(cell); // --2 //職工姓名: PdfPCell pdfCell_zgxm = getPDFCell("職工姓名:",font); pdfCell_zgxm.setBorder(Rectangle.NO_BORDER); table.addCell(pdfCell_zgxm); cell=mergeCol(zBean.getSpname(), font, 3); cell.setBorder(Rectangle.NO_BORDER); cell.setHorizontalAlignment(Element.ALIGN_LEFT); table.addCell(cell); //日期範圍: PdfPCell pdfCell_sjfw = getPDFCell("日期範圍:",font); pdfCell_sjfw.setBorder(Rectangle.NO_BORDER); table.addCell(pdfCell_sjfw); cell=mergeCol(zBean.getRqfw(), font, 3); cell.setBorder(Rectangle.NO_BORDER); cell.setHorizontalAlignment(Element.ALIGN_LEFT); table.addCell(cell); //列印日期: PdfPCell pdfCell_dysj = getPDFCell("列印日期:",font); pdfCell_dysj.setBorder(Rectangle.NO_BORDER); table.addCell(pdfCell_dysj); cell=mergeCol(zBean.getDyrq(), font, 2); cell.setBorder(Rectangle.NO_BORDER); cell.setHorizontalAlignment(Element.ALIGN_LEFT); table.addCell(cell); //--3 PdfPCell mergeRow_sj = mergeRow("時間", font, 2); table.addCell(mergeRow_sj); PdfPCell mergeRow_cllx = mergeRow("處理型別", font, 2); table.addCell(mergeRow_cllx); PdfPCell mergeRow_hjny = mergeRow("匯繳年月", font, 2); table.addCell(mergeRow_hjny); PdfPCell mergeRow_sr = mergeRow("收入", font, 2); table.addCell(mergeRow_sr); PdfPCell mergeCol_zc = mergeCol("支出", font, 3); table.addCell(mergeCol_zc); PdfPCell mergeRow_ye = mergeRow("餘額", font, 2); table.addCell(mergeRow_ye); PdfPCell mergeRow_dwmc = mergeRow("單位名稱", font, 2); mergeRow_dwmc.setColspan(2); table.addCell(mergeRow_dwmc); PdfPCell mergeRow_bz = mergeRow("備註", font, 2); table.addCell(mergeRow_bz); //--4 PdfPCell pdfCell_gjj = getPDFCell("支出",font); table.addCell(pdfCell_gjj); PdfPCell pdfCell_lx = getPDFCell("利息",font); table.addCell(pdfCell_lx); PdfPCell pdfCell_hj = getPDFCell("合計",font); table.addCell(pdfCell_hj); for (Map<String, Object> item_map : zBean.getArray_list()) { table.addCell(getPDFCell(isNull(item_map.get("QRRQ")), font)); table.addCell(getPDFCell(isNull(item_map.get("CLLXNAME")), font)); table.addCell(getPDFCell(isNull(item_map.get("HJNY")), font)); table.addCell(getPDFCell(isNullByZero(item_map.get("SR")), font)); table.addCell(getPDFCell(isNullByZero(item_map.get("ZC")), font));//支出 table.addCell(getPDFCell(isNullByZero(item_map.get("LX")), font));//利息 table.addCell(getPDFCell(addHj(item_map.get("ZC"), item_map.get("LX")), font));//合計自己算 table.addCell(getPDFCell(isNull(item_map.get("YE")), font));//餘額 table.addCell(mergeCol(isNull(item_map.get("SNNAME")), font,2)); table.addCell(getPDFCell("無", font)); } //文件寫入內容 doc.open(); Paragraph title=new Paragraph("公積金職工流水賬",font1); title.setAlignment(Paragraph.ALIGN_CENTER); doc.add(title); doc.add(table); doc.close(); } /** * 合併列的靜態函式 * @param str 內容 * @param font 字型樣式 * @param i 合併幾個單元格,列 * @return */ public static PdfPCell mergeCol(String str,Font font,int i) { PdfPCell cell=new PdfPCell(new Paragraph(str,font)); cell.setMinimumHeight(25); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setVerticalAlignment(Element.ALIGN_MIDDLE); //設定最小單元格高度 cell.setMinimumHeight(20); //將該單元格所在行包括該單元格在內的i列單元格合併為一個單元格 cell.setColspan(i); return cell; } /** * 合併行的靜態函式 * @param str 內容 * @param font 字型 * @param i 合併多少行 * @return */ public static PdfPCell mergeRow(String str,Font font,int i) { //建立單元格物件,將內容及字型傳入 PdfPCell cell=new PdfPCell(new Paragraph(str,font)); //設定單元格內容居中 cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setVerticalAlignment(Element.ALIGN_MIDDLE); //將該單元格所在列包括該單元格在內的i行單元格合併為一個單元格 cell.setRowspan(i); //設定最小單元格高度 cell.setMinimumHeight(20); return cell; } /** * 判斷 object是不是null * @param object * @return 是null 返回“” */ public String isNull(Object object){ return object == null ? "" : object.toString().trim(); } /** * 判斷 object是不是null * @param object * @return 返回 “0” */ public String isNullByZero(Object object){ return object == null ? "0" : object.toString().trim(); } /** * 根據支出 +利息 = 合計 * @param zc * @param lx * @return 合計 */ public String addHj(Object zc,Object lx){ String string_zc= this.isNullByZero(zc).trim(); double double_zc = Double.parseDouble(string_zc); String string_lx = this.isNullByZero(lx).trim(); double double_lx = Double.parseDouble(string_lx); double double_hj = double_zc + double_lx ; return double_hj + ""; } /** * 刪除邊框 * @param cell */ public static void delectBorder(PdfPCell cell){ cell.setBorder(Rectangle.NO_BORDER); } //獲取指定內容與字型的單元格 public static PdfPCell getPDFCell(String string, Font font) { //建立單元格物件,將內容與字型放入段落中作為單元格內容 PdfPCell cell=new PdfPCell(new Paragraph(string,font)); cell.setHorizontalAlignment(Element.ALIGN_CENTER); cell.setVerticalAlignment(Element.ALIGN_MIDDLE); //設定最小單元格高度 cell.setMinimumHeight(20); return cell; } /** * bean * @author yuhf * */ public class ZGLSZBean{ //單位賬戶 private String sncode; //單位名稱 private String snname; //職工賬號 private String spcode; //職工姓名 private String spname; //日期範圍 private String rqfw; //列印日期 private String dyrq; //顯示 列表資料 private List<Map<String,Object>> array_list; public String getSncode() { return sncode; } public void setSncode(String sncode) { this.sncode = sncode; } public String getSnname() { return snname; } public void setSnname(String snname) { this.snname = snname; } public String getSpcode() { return spcode; } public void setSpcode(String spcode) { this.spcode = spcode; } public String getSpname() { return spname; } public void setSpname(String spname) { this.spname = spname; } public String getRqfw() { return rqfw; } public void setRqfw(String rqfw) { this.rqfw = rqfw; } public String getDyrq() { return dyrq; } public void setDyrq(String dyrq) { this.dyrq = dyrq; } public List<Map<String, Object>> getArray_list() { return array_list; } public void setArray_list(List<Map<String, Object>> array_list) { this.array_list = array_list; } } }

6 樣式圖片
這裡寫圖片描述