代码如下,jar包为itext.jar,itextAsia.jar,最好都是最新的 ;2张图片也在最后贴出,把图片放到D盘可以直接生成制定格式的pdf。
最后生成的pdf如下:
代码如下:
1 package com.itext.test; 2 3 import java.io.FileOutputStream; 4 5 import com.itextpdf.text.BaseColor; 6 import com.itextpdf.text.Document; 7 import com.itextpdf.text.Element; 8 import com.itextpdf.text.Image; 9 import com.itextpdf.text.PageSize; 10 import com.itextpdf.text.Paragraph; 11 import com.itextpdf.text.pdf.BaseFont; 12 import com.itextpdf.text.pdf.PdfPCell; 13 import com.itextpdf.text.pdf.PdfPTable; 14 import com.itextpdf.text.pdf.PdfWriter; 15 16 17 public class BaoXiaoDan { 18 public static void main(String[] args) { 19 20 try 21 { 22 Document document = new Document(PageSize.A4.rotate()); 23 PdfWriter.getInstance(document, new FileOutputStream("D:\\Helloworld.PDF")); 24 25 //设置字体 26 BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED); 27 com.itextpdf.text.Font FontChinese24 = new com.itextpdf.text.Font(bfChinese, 24, com.itextpdf.text.Font.BOLD); 28 com.itextpdf.text.Font FontChinese18 = new com.itextpdf.text.Font(bfChinese, 18, com.itextpdf.text.Font.BOLD); 29 com.itextpdf.text.Font FontChinese16 = new com.itextpdf.text.Font(bfChinese, 16, com.itextpdf.text.Font.BOLD); 30 com.itextpdf.text.Font FontChinese12 = new com.itextpdf.text.Font(bfChinese, 12, com.itextpdf.text.Font.NORMAL); 31 com.itextpdf.text.Font FontChinese11Bold = new com.itextpdf.text.Font(bfChinese, 11, com.itextpdf.text.Font.BOLD); 32 com.itextpdf.text.Font FontChinese11 = new com.itextpdf.text.Font(bfChinese, 11, com.itextpdf.text.Font.ITALIC); 33 com.itextpdf.text.Font FontChinese11Normal = new com.itextpdf.text.Font(bfChinese, 11, com.itextpdf.text.Font.NORMAL); 34 35 document.open(); 36 //table1 37 PdfPTable table1 = new PdfPTable(3); 38 PdfPCell cell11 = new PdfPCell(new Paragraph("费用报销",FontChinese24)); 39 cell11.setVerticalAlignment(Element.ALIGN_MIDDLE); 40 cell11.setHorizontalAlignment(Element.ALIGN_CENTER); 41 cell11.setBorder(0); 42 String imagePath = "D:/alibaba.jpg"; 43 Image image1 = Image.getInstance(imagePath); 44 45 Image image2 = Image.getInstance(imagePath); 46 //设置每列宽度比例 47 int width11[] = {35,40,25}; 48 table1.setWidths(width11); 49 table1.getDefaultCell().setBorder(0); 50 table1.addCell(image1); 51 table1.addCell(cell11); 52 table1.addCell(image2); 53 document.add(table1); 54 //加入空行 55 Paragraph blankRow1 = new Paragraph(18f, " ", FontChinese18); 56 document.add(blankRow1); 57 58 //table2 59 PdfPTable table2 = new PdfPTable(2); 60 //设置每列宽度比例 61 int width21[] = {2,98}; 62 table2.setWidths(width21); 63 table2.getDefaultCell().setBorder(0); 64 PdfPCell cell21 = new PdfPCell(new Paragraph("报销概要",FontChinese16)); 65 String imagePath2 = "D:/boder.jpg"; 66 Image image21 = Image.getInstance(imagePath2); 67 cell21.setBorder(0); 68 table2.addCell(image21); 69 table2.addCell(cell21); 70 document.add(table2); 71 //加入空行 72 Paragraph blankRow2 = new Paragraph(18f, " ", FontChinese18); 73 document.add(blankRow2); 74 75 //table3 76 PdfPTable table3 = new PdfPTable(3); 77 int width3[] = {40,35,25}; 78 table3.setWidths(width3); 79 PdfPCell cell31 = new PdfPCell(new Paragraph("申请人:"+"XXX",FontChinese11Normal)); 80 PdfPCell cell32 = new PdfPCell(new Paragraph("日期:"+"2011-11-11",FontChinese11Normal)); 81 PdfPCell cell33 = new PdfPCell(new Paragraph("报销单号:"+"123456789",FontChinese11Normal)); 82 cell31.setBorder(0); 83 cell32.setBorder(0); 84 cell33.setBorder(0); 85 table3.addCell(cell31); 86 table3.addCell(cell32); 87 table3.addCell(cell33); 88 document.add(table3); 89 //加入空行 90 Paragraph blankRow31 = new Paragraph(18f, " ", FontChinese11); 91 document.add(blankRow31); 92 93 //table4 94 PdfPTable table4 = new PdfPTable(2); 95 int width4[] = {40,60}; 96 table4.setWidths(width4); 97 PdfPCell cell41 = new PdfPCell(new Paragraph("公司:"+"XXX",FontChinese11Normal)); 98 PdfPCell cell42 = new PdfPCell(new Paragraph("部门:"+"XXX",FontChinese11Normal)); 99 cell41.setBorder(0); 100 cell42.setBorder(0); 101 table4.addCell(cell41); 102 table4.addCell(cell42); 103 document.add(table4); 104 //加入空行 105 Paragraph blankRow41 = new Paragraph(18f, " ", FontChinese11); 106 document.add(blankRow41); 107 108 //table5 109 PdfPTable table5 = new PdfPTable(1); 110 PdfPCell cell51 = new PdfPCell(new Paragraph("报销说明:"+"XXX",FontChinese11)); 111 cell51.setBorder(0); 112 table5.addCell(cell51); 113 document.add(table5); 114 //加入空行 115 Paragraph blankRow51 = new Paragraph(18f, " ", FontChinese18); 116 document.add(blankRow51); 117 118 //table6 119 PdfPTable table6 = new PdfPTable(2); 120 table6.getDefaultCell().setBorder(0); 121 table6.setWidths(width21); 122 PdfPCell cell61 = new PdfPCell(new Paragraph("报销明细",FontChinese16)); 123 cell61.setBorder(0); 124 table6.addCell(image21); 125 table6.addCell(cell61); 126 document.add(table6); 127 //加入空行 128 Paragraph blankRow4 = new Paragraph(18f, " ", FontChinese16); 129 document.add(blankRow4); 130 131 //table7 132 PdfPTable table7 = new PdfPTable(6); 133 BaseColor lightGrey = new BaseColor(0xCC,0xCC,0xCC); 134 int width7[] = {20,18,13,20,14,15}; 135 table7.setWidths(width7); 136 PdfPCell cell71 = new PdfPCell(new Paragraph("费用类型",FontChinese11Bold)); 137 PdfPCell cell72 = new PdfPCell(new Paragraph("费用发生时间",FontChinese11Bold)); 138 PdfPCell cell73 = new PdfPCell(new Paragraph("详细信息",FontChinese11Bold)); 139 PdfPCell cell74 = new PdfPCell(new Paragraph("消费金币/币种",FontChinese11Bold)); 140 PdfPCell cell75 = new PdfPCell(new Paragraph("报销汇率",FontChinese11Bold)); 141 PdfPCell cell76 = new PdfPCell(new Paragraph("报销金额",FontChinese11Bold)); 142 //表格高度 143 cell71.setFixedHeight(25); 144 cell72.setFixedHeight(25); 145 cell73.setFixedHeight(25); 146 cell74.setFixedHeight(25); 147 cell75.setFixedHeight(25); 148 cell76.setFixedHeight(25); 149 //水平居中 150 cell71.setHorizontalAlignment(Element.ALIGN_CENTER); 151 cell72.setHorizontalAlignment(Element.ALIGN_CENTER); 152 cell73.setHorizontalAlignment(Element.ALIGN_CENTER); 153 cell74.setHorizontalAlignment(Element.ALIGN_CENTER); 154 cell75.setHorizontalAlignment(Element.ALIGN_CENTER); 155 cell76.setHorizontalAlignment(Element.ALIGN_CENTER); 156 //垂直居中 157 cell71.setVerticalAlignment(Element.ALIGN_MIDDLE); 158 cell72.setVerticalAlignment(Element.ALIGN_MIDDLE); 159 cell73.setVerticalAlignment(Element.ALIGN_MIDDLE); 160 cell74.setVerticalAlignment(Element.ALIGN_MIDDLE); 161 cell75.setVerticalAlignment(Element.ALIGN_MIDDLE); 162 cell76.setVerticalAlignment(Element.ALIGN_MIDDLE); 163 //边框颜色 164 cell71.setBorderColor(lightGrey); 165 cell72.setBorderColor(lightGrey); 166 cell73.setBorderColor(lightGrey); 167 cell74.setBorderColor(lightGrey); 168 cell75.setBorderColor(lightGrey); 169 cell76.setBorderColor(lightGrey); 170 //去掉左右边框 171 cell71.disableBorderSide(8); 172 cell72.disableBorderSide(4); 173 cell72.disableBorderSide(8); 174 cell73.disableBorderSide(4); 175 cell73.disableBorderSide(8); 176 cell74.disableBorderSide(4); 177 cell74.disableBorderSide(8); 178 cell75.disableBorderSide(4); 179 cell75.disableBorderSide(8); 180 cell76.disableBorderSide(4); 181 table7.addCell(cell71); 182 table7.addCell(cell72); 183 table7.addCell(cell73); 184 table7.addCell(cell74); 185 table7.addCell(cell75); 186 table7.addCell(cell76); 187 document.add(table7); 188 189 //table8 190 PdfPTable table8 = new PdfPTable(6); 191 int width8[] = {20,18,13,20,14,15}; 192 table8.setWidths(width8); 193 PdfPCell cell81 = new PdfPCell(new Paragraph("差旅报销",FontChinese12)); 194 PdfPCell cell82 = new PdfPCell(new Paragraph("2011-11-11",FontChinese12)); 195 PdfPCell cell83 = new PdfPCell(new Paragraph("XXX",FontChinese12)); 196 PdfPCell cell84 = new PdfPCell(new Paragraph("XXX",FontChinese12)); 197 PdfPCell cell85 = new PdfPCell(new Paragraph("XXX",FontChinese12)); 198 PdfPCell cell86 = new PdfPCell(new Paragraph("XXX",FontChinese12)); 199 //表格高度 200 cell81.setFixedHeight(25); 201 cell82.setFixedHeight(25); 202 cell83.setFixedHeight(25); 203 cell84.setFixedHeight(25); 204 cell85.setFixedHeight(25); 205 cell86.setFixedHeight(25); 206 //水平居中 207 cell81.setHorizontalAlignment(Element.ALIGN_CENTER); 208 cell82.setHorizontalAlignment(Element.ALIGN_CENTER); 209 cell83.setHorizontalAlignment(Element.ALIGN_CENTER); 210 cell84.setHorizontalAlignment(Element.ALIGN_CENTER); 211 cell85.setHorizontalAlignment(Element.ALIGN_CENTER); 212 cell86.setHorizontalAlignment(Element.ALIGN_CENTER); 213 //垂直居中 214 cell81.setVerticalAlignment(Element.ALIGN_MIDDLE); 215 cell82.setVerticalAlignment(Element.ALIGN_MIDDLE); 216 cell83.setVerticalAlignment(Element.ALIGN_MIDDLE); 217 cell84.setVerticalAlignment(Element.ALIGN_MIDDLE); 218 cell85.setVerticalAlignment(Element.ALIGN_MIDDLE); 219 cell86.setVerticalAlignment(Element.ALIGN_MIDDLE); 220 //边框颜色 221 cell81.setBorderColor(lightGrey); 222 cell82.setBorderColor(lightGrey); 223 cell83.setBorderColor(lightGrey); 224 cell84.setBorderColor(lightGrey); 225 cell85.setBorderColor(lightGrey); 226 cell86.setBorderColor(lightGrey); 227 //去掉左右边框 228 cell81.disableBorderSide(8); 229 cell82.disableBorderSide(4); 230 cell82.disableBorderSide(8); 231 cell83.disableBorderSide(4); 232 cell83.disableBorderSide(8); 233 cell84.disableBorderSide(4); 234 cell84.disableBorderSide(8); 235 cell85.disableBorderSide(4); 236 cell85.disableBorderSide(8); 237 cell86.disableBorderSide(4); 238 table8.addCell(cell81); 239 table8.addCell(cell82); 240 table8.addCell(cell83); 241 table8.addCell(cell84); 242 table8.addCell(cell85); 243 table8.addCell(cell86); 244 document.add(table8); 245 //加入空行 246 Paragraph blankRow5 = new Paragraph(18f, " ", FontChinese18); 247 document.add(blankRow5); 248 249 //table9 250 PdfPTable table9 = new PdfPTable(3); 251 int width9[] = {30,50,20}; 252 table9.setWidths(width9); 253 PdfPCell cell91 = new PdfPCell(new Paragraph("",FontChinese12)); 254 PdfPCell cell92 = new PdfPCell(new Paragraph("收到的报销金额",FontChinese12)); 255 PdfPCell cell93 = new PdfPCell(new Paragraph("1000",FontChinese24)); 256 cell92.setHorizontalAlignment(Element.ALIGN_RIGHT); 257 cell92.setVerticalAlignment(Element.ALIGN_MIDDLE); 258 cell93.setHorizontalAlignment(Element.ALIGN_LEFT); 259 cell93.setVerticalAlignment(Element.ALIGN_MIDDLE); 260 cell91.setBorder(0); 261 cell92.setBorder(0); 262 cell93.setBorder(0); 263 table9.addCell(cell91); 264 table9.addCell(cell92); 265 table9.addCell(cell93); 266 document.add(table9); 267 268 document.close(); 269 270 } catch (Exception ex) 271 { 272 ex.printStackTrace(); 273 } 274 } 275 }
只有当你忍痛前行后,你猜能知道,所谓的痛不过尔尔!