java使用itext,制作pdf文件
来源:互联网 发布:java junit assert 编辑:程序博客网 时间:2024/06/05 07:46
1好的链接地址
http://blog.csdn.net/u013129932/article/details/43889705
制作table
2 http://blog.csdn.net/polo_longsan/article/details/39254867
pdf文件添加数据
3 http://blog.csdn.net/jidetashuo/article/details/51691262
pdf文件添加图片
4 demo 地址
https://gitee.com/yuhaifei/PDFAndQRCode.git
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 样式图片
阅读全文
0 0
- java使用itext,制作pdf文件
- java使用itext合并pdf文件
- 【Java】使用iText生成PDF文件
- 生成PDF文件-使用iText制作复杂表格
- Java中使用iText组件制作pdf报表
- Java中使用iText组件制作pdf报表
- 使用iText输出PDF文件
- 使用iText操作pdf文件
- 使用iText操作pdf文件
- 使用iText操作pdf文件
- 使用iText操作pdf文件
- 使用iText操作pdf文件
- 使用iText操作pdf文件
- 使用iText操作pdf文件
- 使用iText操作pdf文件
- 使用iText创建PDF文件
- 使用 iText 操作pdf文件
- 使用Itext导出PDF文件
- GIt
- 如和将本地的项目保存到github
- RDMA与传统网络通信(Socket)的区别
- 汽车模拟游戏源码下载Rigs of Rods(C/C++)
- flex基础语法介绍
- java使用itext,制作pdf文件
- 随机装箱算法(Random Binning Features)
- Fragment XXXXXX{xxxxxxxxx} not attached to Activity
- java-构造方法-super关键字
- OB10 解决表被锁定
- python爬虫项目- 爬取厦门航空官网机票价格 selenium 多进程爬取
- Greenplum merge insert 用法与性能 (insert on conflict)
- FreeBASIC学习笔记——4.1 选择语句
- ubuntu QT开发环境(三种方法安装Qt4.8)