在日常的应用中经常会有需求,生成pdf或者word文档,常见的第三方工具有Apache的poi,以及itext等等,这里使用itext生成pdf,以个人简历作为示例,了解itextde 使用。

第0步:效果:

第一步:引入依赖包:

<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13.1</version>
</dependency>
<dependency><groupId>com.itextpdf</groupId><artifactId>font-asian</artifactId><version>7.1.9</version><scope>test</scope>
</dependency>
<dependency><groupId>com.itextpdf</groupId><artifactId>layout</artifactId><version>7.1.9</version>
</dependency>

第二步:首先要创建文档Document,以及设置文档属性,如设置为A4纸等等,然后设置文档的保存路径,接下来就是开始编写文档的元素了,如段落,表格、标题等等。

完整代码如下:

package net.hlinfo.utils;import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;public class PdfDemo {private static final String splitVline = "    |    ";private static final String TAB = "    ";//判断是否为16进制颜色public static boolean isHexColor(String color) {String HEX_PATTERN = "[0-9A-Fa-f]+";return color != null && color.length() == 6 && color.matches(HEX_PATTERN);}//将16进制颜色转换为Color对象private static BaseColor myColor(String hexColor) {hexColor = hexColor.replace("#", "");if(hexColor.length()==3) {hexColor = hexColor+hexColor;}if(!isHexColor(hexColor)) {hexColor = "ffffff";}int r= Integer.valueOf( hexColor.substring( 0, 2 ), 16 );int g= Integer.valueOf( hexColor.substring( 2, 4 ), 16 );int b= Integer.valueOf( hexColor.substring( 4, 6 ), 16 );return new BaseColor(r,g,b);}/*** 设置字体,及大小* @param size* @param style* @return* @throws DocumentException* @throws IOException*/private static Font myfont(float size,int style) throws DocumentException, IOException {BaseFont bfChinese = BaseFont.createFont("/home/syst.ttf",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);com.itextpdf.text.Font myFont = new com.itextpdf.text.Font(bfChinese, size, style);return myFont;}private static Font myfont(float size,int style,String color) throws DocumentException, IOException {BaseFont bfChinese = BaseFont.createFont("/home/syst.ttf",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);com.itextpdf.text.Font myFont = new com.itextpdf.text.Font(bfChinese, size, style);myFont.setColor(myColor(color));return myFont;}/*** 标题一* @param text* @return* @throws DocumentException* @throws IOException*/private static Paragraph h1(String text) throws DocumentException, IOException {Paragraph p = new Paragraph(text,myfont(16,Font.BOLD));//p.setSpacingBefore(30f);return p;}/*** 带前导图的标题* @param text 标题文字* @return* @throws Exception*/private static PdfPTable add_headtitle_1(String text) throws Exception{PdfPTable table = new PdfPTable(2);// 实现单元格跨页显示table.setSplitLate(false);table.setSplitRows(true);//设置每列宽度比例   int width_ht1[] = {2,98};table.setWidths(width_ht1); table.getDefaultCell().setBorder(0);//带前导图(方法1)地址//String imagePath2 = "/home/hadoop/Pictures/line.png"; //图片为2px*11px//Image image21 = Image.getInstance(imagePath2); //带前导图(方法2)用Java画BufferedImage image = new BufferedImage(2, 11,BufferedImage.TYPE_INT_RGB);Graphics g = image.getGraphics();g.setColor(new Color(83, 202, 195)); // #53cac3g.fillRect(0, 0, 2, 11);Image image21 = Image.getInstance(image,null);PdfPCell cellHt1img=new PdfPCell();cellHt1img.setBorder(0);cellHt1img.setImage(image21);cellHt1img.setFixedHeight(1);cellHt1img.setPaddingTop(5);PdfPCell cellHt1Content = new PdfPCell(h1(text));cellHt1Content.setBorder(0);//cell21.setLeading(5, 1);table.addCell(cellHt1img);table.addCell(cellHt1Content); return table;}/*** 空行* @return* @throws Exception*/private static Paragraph blankRow() throws Exception{Paragraph blankRow = new Paragraph(20f, " ", myfont(20,Font.BOLD)); return blankRow;}/*** 空行* @param leading 行间距* @return* @throws Exception*/private static Paragraph blankRow(float leading) throws Exception{Paragraph blankRow = new Paragraph(leading, " ", myfont(20,Font.BOLD)); return blankRow;}private static PdfPCell add_cell(Object obj,float lead) throws Exception{PdfPCell cell = new PdfPCell(new Paragraph(obj+"",myfont(12,Font.NORMAL)));cell.setBorder(0);cell.setLeading(lead, 1);return cell;}private static PdfPCell add_cell(Object obj,String color,float lead) throws Exception{color = color==null?"#000000":color;PdfPCell cell = new PdfPCell(new Paragraph(obj+"",myfont(12,Font.NORMAL,color)));cell.setBorder(0);cell.setLeading(lead, 1);return cell;}private static PdfPCell add_cell(Object obj,TBCell tbCell) throws Exception{PdfPCell cell = new PdfPCell(new Paragraph(obj+"",myfont(tbCell.getFontSize(),tbCell.getFontStyle(),tbCell.getTextColor())));cell.setBorder(tbCell.getBorder());cell.setLeading(tbCell.getLead(), 1);if(tbCell.getBgcolor()!=null && !"".equals(tbCell.getBgcolor())) {cell.setBackgroundColor(myColor(tbCell.getBgcolor()));}if(tbCell.getColspan()!=0) {cell.setColspan(tbCell.getColspan());}if(tbCell.getRowspan()!=0) {cell.setRowspan(tbCell.getRowspan());}if(tbCell.getBorderColor()!=null && !"".equals(tbCell.getBorderColor())) {cell.setBorderColor(myColor(tbCell.getBorderColor()));}if(tbCell.getIndent()>0) {cell.setIndent(tbCell.getIndent());}return cell;}private static PdfPCell add_cell_speace(TBCell tbCell) throws Exception{PdfPCell cell = new PdfPCell(new Paragraph(" ",myfont(tbCell.getFontSize(),tbCell.getFontStyle(),tbCell.getTextColor())));cell.setBorder(tbCell.getBorder());cell.setLeading(tbCell.getLead(), 1);if(tbCell.getBgcolor()!=null && !"".equals(tbCell.getBgcolor())) {cell.setBackgroundColor(myColor(tbCell.getBgcolor()));}if(tbCell.getColspan()!=0) {cell.setColspan(tbCell.getColspan());}if(tbCell.getRowspan()!=0) {cell.setRowspan(tbCell.getRowspan());}if(tbCell.getBorderColor()!=null && !"".equals(tbCell.getBorderColor())) {cell.setBorderColor(myColor(tbCell.getBorderColor()));}if(tbCell.getIndent()>0) {cell.setIndent(tbCell.getIndent());}return cell;}/*** 工作经验主体方法* @param doc Document对象* @throws Exception*/private static void add_workExpTable(Document doc) throws Exception{PdfPTable workExpTable = new PdfPTable(1);// 实现单元格跨页显示workExpTable.setSplitLate(false);workExpTable.setSplitRows(true);int workExpTableWidth[] = {100};workExpTable.setWidths(workExpTableWidth);workExpTable.getDefaultCell().setBorder(0);TBCell tbcs1= TBCell.NEW().bgcolor("#eee").lead(5).borderColor("#eee").fontStyle(Font.BOLD);TBCell tbcs2= TBCell.NEW().bgcolor("#eee").lead(10).borderColor("#eee").colspan(2).rowspan(1).fontStyle(Font.BOLD);TBCell tbcs3= TBCell.NEW().bgcolor("#eee").lead(10).borderColor("#eee").colspan(2).rowspan(1);TBCell tbcs4= TBCell.NEW().bgcolor("#eee").lead(10).borderColor("#eee").colspan(2).rowspan(1).indent(20);TBCell tbcs5= TBCell.NEW().bgcolor("#eee").lead(1).borderColor("#eee").colspan(2).rowspan(1);workExpTable.addCell(add_cell("贵州大数据发展集团", tbcs1));StringBuffer sbf = new StringBuffer();sbf.append("2019年10月-2020年10月");sbf.append(splitVline);sbf.append("项目经理");sbf.append(splitVline);sbf.append("10k~15k");sbf.append(splitVline);sbf.append("互联网产品经理");sbf.append(splitVline);sbf.append("计算机科学与技术");workExpTable.addCell(add_cell(sbf.toString(),tbcs4));workExpTable.addCell(add_cell("工作描述:",tbcs2));StringBuffer sbd = new StringBuffer();sbd.append("在公司参与营销中心财务系统的设计与开发。\n" + "系统基于spring cloud的微服务平台,前端是使用vue框架,后台使用spring cloud与Mybatis,前后台使用json数据交换。还使用了mysql分布式数据库,Oracle数据库以及redis集群,\n" + "系统使用docker容器部署。使用git代码管理,maven构建系统,devops自动化部署");workExpTable.addCell(add_cell(sbd.toString(),tbcs4));workExpTable.addCell(add_cell_speace(tbcs5));doc.add(workExpTable);doc.add(blankRow(5));}/*** 项目经验主体* @param doc Document对象* @throws Exception*/private static void add_projectExpTable(Document doc) throws Exception{PdfPTable workExpTable = new PdfPTable(1);// 实现单元格跨页显示workExpTable.setSplitLate(false);workExpTable.setSplitRows(true);int workExpTableWidth[] = {100};workExpTable.setWidths(workExpTableWidth);workExpTable.getDefaultCell().setBorder(0);TBCell tbcs1= TBCell.NEW().bgcolor("#eee").lead(5).borderColor("#eee").fontStyle(Font.BOLD);TBCell tbcs2= TBCell.NEW().bgcolor("#eee").lead(10).borderColor("#eee").colspan(2).rowspan(1).fontStyle(Font.BOLD);TBCell tbcs3= TBCell.NEW().bgcolor("#eee").lead(10).borderColor("#eee").colspan(2).rowspan(1);TBCell tbcs4= TBCell.NEW().bgcolor("#eee").lead(10).borderColor("#eee").colspan(2).rowspan(1).indent(20);TBCell tbcs5= TBCell.NEW().bgcolor("#eee").lead(1).borderColor("#eee").colspan(2).rowspan(1);workExpTable.addCell(add_cell("基于人工智能的智慧校园平台", tbcs1));StringBuffer sbf = new StringBuffer();sbf.append("项目时间:2019年11月11日0点-2019年11月20日24点");sbf.append(splitVline);sbf.append("担任角色:项目经理");sbf.append(splitVline);sbf.append("所属单位:贵州大数据研究所");workExpTable.addCell(add_cell(sbf.toString(),tbcs3));workExpTable.addCell(add_cell("项目描述:",tbcs2));StringBuffer sbd = new StringBuffer();sbd.append("在公司参与营销中心财务系统的设计与开发。\n" + "系统基于spring cloud的微服务平台,前端是使用vue框架,后台使用spring cloud与Mybatis,前后台使用json数据交换。还使用了mysql分布式数据库,Oracle数据库以及redis集群,\n" + "系统使用docker容器部署。使用git代码管理,maven构建系统,devops自动化部署");workExpTable.addCell(add_cell(sbd.toString(),tbcs4));workExpTable.addCell(add_cell("个人职责:",tbcs2));StringBuffer sbgr = new StringBuffer();sbgr.append("在公司参与营销中心财务系统的设计与开发。\n" + "系统基于spring cloud的微服务平台,前端是使用vue框架,后台使用spring cloud与Mybatis,前后台使用json数据交换。还使用了mysql分布式数据库,Oracle数据库以及redis集群,\n" + "系统使用docker容器部署。使用git代码管理,maven构建系统,devops自动化部署");workExpTable.addCell(add_cell(sbgr.toString(),tbcs4));workExpTable.addCell(add_cell_speace(tbcs5));doc.add(workExpTable);doc.add(blankRow(5));}/*** 教育经历* @param doc Document对象* @throws Exception*/private static void add_eduExpTable(Document doc) throws Exception{PdfPTable workExpTable = new PdfPTable(1);// 实现单元格跨页显示workExpTable.setSplitLate(false);workExpTable.setSplitRows(true);int workExpTableWidth[] = {100};workExpTable.setWidths(workExpTableWidth);workExpTable.getDefaultCell().setBorder(0);TBCell tbcs1= TBCell.NEW().bgcolor("#eee").lead(5).borderColor("#eee").fontStyle(Font.BOLD);TBCell tbcs2= TBCell.NEW().bgcolor("#eee").lead(10).borderColor("#eee").colspan(2).rowspan(1).fontStyle(Font.BOLD);TBCell tbcs3= TBCell.NEW().bgcolor("#eee").lead(10).borderColor("#eee").colspan(2).rowspan(1);TBCell tbcs4= TBCell.NEW().bgcolor("#eee").lead(10).borderColor("#eee").colspan(2).rowspan(1).indent(20);TBCell tbcs5= TBCell.NEW().bgcolor("#eee").lead(1).borderColor("#eee").colspan(2).rowspan(1);workExpTable.addCell(add_cell("贵州教育大学", tbcs1));StringBuffer sbf = new StringBuffer();sbf.append("专业:计算机科学与技术");sbf.append(splitVline);sbf.append("学历:本科");sbf.append(splitVline);sbf.append("时间:2015年9月-2019年7月");workExpTable.addCell(add_cell(sbf.toString(),tbcs3));workExpTable.addCell(add_cell_speace(tbcs5));doc.add(workExpTable);doc.add(blankRow(5));}/*** 培训经历* @param doc Document对象* @throws Exception*/private static void add_trainExpTable(Document doc) throws Exception{PdfPTable workExpTable = new PdfPTable(1);// 实现单元格跨页显示workExpTable.setSplitLate(false);workExpTable.setSplitRows(true);int workExpTableWidth[] = {100};workExpTable.setWidths(workExpTableWidth);workExpTable.getDefaultCell().setBorder(0);TBCell tbcs1= TBCell.NEW().bgcolor("#eee").lead(5).borderColor("#eee").fontStyle(Font.BOLD);TBCell tbcs2= TBCell.NEW().bgcolor("#eee").lead(10).borderColor("#eee").colspan(2).rowspan(1).fontStyle(Font.BOLD);TBCell tbcs3= TBCell.NEW().bgcolor("#eee").lead(10).borderColor("#eee").colspan(2).rowspan(1);TBCell tbcs4= TBCell.NEW().bgcolor("#eee").lead(10).borderColor("#eee").colspan(2).rowspan(1).indent(20);TBCell tbcs5= TBCell.NEW().bgcolor("#eee").lead(1).borderColor("#eee").colspan(2).rowspan(1);workExpTable.addCell(add_cell("培训课程:hadoop高级工程师培训", tbcs1));StringBuffer sbf = new StringBuffer();sbf.append("时间:2015年9月-2019年7月");sbf.append(splitVline);sbf.append("培训机构:大数据培训中心");workExpTable.addCell(add_cell(sbf.toString(),tbcs3));workExpTable.addCell(add_cell_speace(tbcs5));doc.add(workExpTable);doc.add(blankRow(5));}/*** 专业技能* @param doc Document对象* @throws Exception*/private static void add_majorSkillExpTable(Document doc) throws Exception{PdfPTable workExpTable = new PdfPTable(1);//配置单元格跨页显示workExpTable.setSplitLate(false);workExpTable.setSplitRows(true);int workExpTableWidth[] = {100};workExpTable.setWidths(workExpTableWidth);workExpTable.getDefaultCell().setBorder(0);TBCell tbcs3= TBCell.NEW().bgcolor("#eee").lead(10).borderColor("#eee").colspan(2).rowspan(1);TBCell tbcs5= TBCell.NEW().bgcolor("#eee").lead(1).borderColor("#eee").colspan(2).rowspan(1);StringBuffer sbf = new StringBuffer();sbf.append("Linux");sbf.append(splitVline);sbf.append("5年");sbf.append(splitVline);sbf.append("熟练");workExpTable.addCell(add_cell(sbf.toString(),tbcs3));workExpTable.addCell(add_cell_speace(tbcs5));doc.add(workExpTable);doc.add(blankRow(5));}/*** 语言能力* @param doc Document对象* @throws Exception*/private static void add_langSkillExpTable(Document doc) throws Exception{PdfPTable workExpTable = new PdfPTable(1);//配置单元格跨页显示workExpTable.setSplitLate(false);workExpTable.setSplitRows(true);int workExpTableWidth[] = {100};workExpTable.setWidths(workExpTableWidth);workExpTable.getDefaultCell().setBorder(0);TBCell tbcs3= TBCell.NEW().bgcolor("#eee").lead(10).borderColor("#eee").colspan(2).rowspan(1);TBCell tbcs5= TBCell.NEW().bgcolor("#eee").lead(1).borderColor("#eee").colspan(2).rowspan(1);StringBuffer sbf = new StringBuffer();sbf.append("英语");sbf.append(splitVline);sbf.append("听说能力:熟练");sbf.append(splitVline);sbf.append("读写能力:熟练");workExpTable.addCell(add_cell(sbf.toString(),tbcs3));workExpTable.addCell(add_cell_speace(tbcs5));doc.add(workExpTable);doc.add(blankRow(5));}/*** 资格证书 * @param doc Document对象* @throws Exception*/private static void add_certExpTable(Document doc) throws Exception{PdfPTable workExpTable = new PdfPTable(1);int workExpTableWidth[] = {100};workExpTable.setWidths(workExpTableWidth);workExpTable.getDefaultCell().setBorder(0);TBCell tbcs3= TBCell.NEW().lead(10).colspan(2).rowspan(1);TBCell tbcs5= TBCell.NEW().lead(1).colspan(2).rowspan(1);StringBuffer sbf = new StringBuffer();sbf.append("证书名称: HCIP华为认证ICT高级工程师");sbf.append(splitVline);sbf.append("获得时间:2019年10月");workExpTable.addCell(add_cell(sbf.toString(),tbcs3));//String certImgPath = "http://www.ynbdqn.cn/DianNaoPeiXun/UploadFiles_7627/201011/2010111610590444.jpg";String certImgPath = "/home/hadoop/Pictures/cert.jpeg";Image certImg = Image.getInstance(certImgPath); //设置图片缩放(让超过文档宽度的图片自适应宽度)float imgWidth = certImg.getScaledWidth();BigDecimal bdiw = new BigDecimal("480").divide(new BigDecimal(imgWidth),2, RoundingMode.HALF_UP);BigDecimal bdrs = bdiw.multiply(new BigDecimal("100"));certImg.scalePercent(bdrs.floatValue());PdfPCell cellCert=new PdfPCell();cellCert.setBorder(0);cellCert.setImage(certImg);workExpTable.addCell(add_cell_speace(tbcs5));workExpTable.addCell(cellCert);workExpTable.addCell(add_cell_speace(tbcs5));doc.add(workExpTable);doc.add(blankRow(5));}public static void main(String[] args) {try{//创建文档Document document = new Document(PageSize.A4,5, 5, 36, 36);//设置文档保存路径PdfWriter.getInstance(document, new FileOutputStream("/home/demo.pdf"));document.open();Paragraph title = new Paragraph(18f, "个人简历", myfont(22,Font.BOLD));title.setAlignment(Element.ALIGN_CENTER);document.add(title);document.add(blankRow(30));//基本信息PdfPTable tbBaseInfo = new PdfPTable(2);PdfPCell cell11 = new PdfPCell(new Paragraph("林黛玉",myfont(18,Font.NORMAL)));cell11.setBorder(0);//cell11.setPaddingTop(5);cell11.setPaddingBottom(10);cell11.setPaddingLeft(15);//头像String headImgPath = "/home/hadoop/Pictures/lindaiyu.jpg";Image headImg = Image.getInstance(headImgPath); //设置每列宽度比例   int width11[] = {15,85};tbBaseInfo.setWidths(width11); tbBaseInfo.getDefaultCell().setBorder(0);PdfPCell cellHimg=new PdfPCell();cellHimg.setBorder(0);cellHimg.setImage(headImg);cellHimg.setColspan(1);//合并单元格cellHimg.setRowspan(3);tbBaseInfo.addCell(cellHimg);tbBaseInfo.addCell(cell11);PdfPCell cell12 = new PdfPCell(new Paragraph("女"+splitVline+"18岁"+splitVline+"大观园潇湘馆"+splitVline+"6年工作经验",myfont(12,Font.NORMAL)));cell12.setPaddingBottom(5);cell12.setPaddingLeft(15);cell12.setBorder(0);tbBaseInfo.addCell(cell12);PdfPCell cell13 = new PdfPCell(new Paragraph("15700000000"+splitVline+"lindaiyu@exapme.com",myfont(12,Font.NORMAL)));cell13.setBorder(0);cell13.setPaddingLeft(15);tbBaseInfo.addCell(cell13);document.add(tbBaseInfo);//加入空行document.add(blankRow(30));document.add(add_headtitle_1("求职意向"));//加入空行document.add(blankRow(5));//求职意向主体PdfPTable careerTable = new PdfPTable(4);//配置单元格跨页显示careerTable.setSplitLate(false);careerTable.setSplitRows(true);int careerTableWidth[] = {15,35,15,35};careerTable.setWidths(careerTableWidth); careerTable.addCell(add_cell("求职状态:", "#878787",10));careerTable.addCell(add_cell("在职考虑换工作",10));careerTable.addCell(add_cell("工作地点:", "#878787",10));careerTable.addCell(add_cell("中国-义龙新区",10));careerTable.addCell(add_cell("期望行业:", "#878787",10));careerTable.addCell(add_cell("事业单位/计算机",10));careerTable.addCell(add_cell("期望职业:", "#878787",10));careerTable.addCell(add_cell("项目经理/运维开发/信息安全工程师/系统架构师",10));careerTable.addCell(add_cell("期望薪资:", "#878787",10));careerTable.addCell(add_cell("10k~15k",10));careerTable.addCell(add_cell("工作性质:", "#878787",10));careerTable.addCell(add_cell("全职",10));document.add(careerTable);//加入空行document.add(blankRow());//工作经验document.add(add_headtitle_1("工作经验"));document.add(blankRow(5));//工作经验 主体 Beginadd_workExpTable(document);add_workExpTable(document);//工作经验 主体 ENDdocument.add(blankRow());//项目经验document.add(add_headtitle_1("项目经验"));document.add(blankRow(5));add_projectExpTable(document);document.add(blankRow());//教育经历document.add(add_headtitle_1("教育经历"));document.add(blankRow(5));add_eduExpTable(document);document.add(blankRow());//培训经历document.add(add_headtitle_1("培训经历"));document.add(blankRow(5));add_trainExpTable(document);document.add(blankRow());//专业技能document.add(add_headtitle_1("专业技能"));document.add(blankRow(5));add_majorSkillExpTable(document);document.add(blankRow());//语言能力document.add(add_headtitle_1("语言能力"));document.add(blankRow(5));add_langSkillExpTable(document);document.add(blankRow());//资格证书document.add(add_headtitle_1("资格证书 "));document.add(blankRow(5));add_certExpTable(document);document.close();System.out.println("创建成功");} catch (Exception ex){ex.printStackTrace();}}
}

其中TBCell类用于链式设置文档元素的属性(如颜色、边框、字体大小等):

package net.hlinfo.utils;import com.itextpdf.text.Font;public class TBCell {private int border=0;private String textColor="#000000";private float lead=0;private float fontSize=12;private String bgcolor=null;private int colspan=0;private int rowspan=0;private String borderColor;private int fontStyle=Font.NORMAL;private float indent=0;public float getIndent() {return indent;}public void setIndent(float indent) {this.indent = indent;}public int getFontStyle() {return fontStyle;}public void setFontStyle(int fontStyle) {this.fontStyle = fontStyle;}public String getBorderColor() {return borderColor;}public void setBorderColor(String borderColor) {this.borderColor = borderColor;}public int getColspan() {return colspan;}public void setColspan(int colspan) {this.colspan = colspan;}public int getRowspan() {return rowspan;}public void setRowspan(int rowspan) {this.rowspan = rowspan;}public int getBorder() {return border;}public void setBorder(int border) {this.border = border;}public String getTextColor() {return textColor;}public void setTextColor(String textColor) {this.textColor = textColor;}public float getLead() {return lead;}public void setLead(float lead) {this.lead = lead;}public float getFontSize() {return fontSize;}public void setFontSize(float fontSize) {this.fontSize = fontSize;}public String getBgcolor() {return bgcolor;}public void setBgcolor(String bgcolor) {this.bgcolor = bgcolor;}public static TBCell NEW() {return new TBCell();}public TBCell border(int border) {this.setBorder(border);return this;}public TBCell color(String color) {this.setTextColor(color);return this;}public TBCell lead(float lead) {this.setLead(lead);return this;}public TBCell fontSize(float fontSize) {this.setFontSize(fontSize);return this;}public TBCell bgcolor(String bgcolor) {this.setBgcolor(bgcolor);return this;}public TBCell colspan(int colspan) {this.setColspan(colspan);return this;}public TBCell rowspan(int rowspan) {this.setRowspan(rowspan);return this;}public TBCell borderColor(String borderColor) {this.setBorderColor(borderColor);return this;}public TBCell fontStyle(int fontStyle) {this.setFontStyle(fontStyle);return this;}public TBCell indent(float indent) {this.setIndent(indent);return this;}@Overridepublic String toString() {return "TBCell [border=" + border + ", textColor=" + textColor + ", lead=" + lead + ", fontSize=" + fontSize+ ", bgcolor=" + bgcolor + ", colspan=" + colspan + ", rowspan=" + rowspan + ", borderColor="+ borderColor + ", fontStyle=" + fontStyle + "]";}}

用到的字体syst.ttf为思源宋体,可以换为你喜欢的字体,

Java使用itext 生成PDF,以生成个人简历为例相关推荐

  1. Java/web/jsp根据pdf模板生成荣誉证书PDF文件

    Java/web/jsp根据pdf模板生成荣誉证书PDF文件 1.前言 最近博主在开发一个大学生学分管理系统,按照对方用户的要求,他们需要一个生成PDF荣誉证书的功能. 于是Java根据pdf模板生成 ...

  2. java使用itext填充pdf模板,超简单教学,有手就行

    java使用itext填充pdf模板 1.先去建一个Word文件,设置好想要填充的地方,留好位置,设置好下划线 2.将Word另存为pdf 3.打开电脑中的Adobe Acrobat pro DC(这 ...

  3. python数据生成pdf,Python生成pdf文件的方法

    摘要:这篇Python开发技术栏目下的"Python生成pdf文件的方法",介绍的技术点是"python生成pdf文件.python生成pdf.生成pdf文件.Pytho ...

  4. java 使用itext导出PDF文件,中文不显示问题解决

    之前写的java 使用itext 导出pdf 发现有个问题,在今天使用的时候,发现一个问题,就是当单元格中写中文的时候,导出来的pdf中文不显示. java 使用itext导出PDF文件,图片文字左右 ...

  5. java 使用itext 导出pdf 控制图片的大小

    在使用itext 导出pdf 的过程中,可能会遇到这样的需求,就是导出文字加图片.使用我们前面写的程序,确实是可以导出图片,如果针对于类似简历的需求,图片填充单元格,会满足效果,如下图所示: 但在实际 ...

  6. java itext 导出pdf文件_【Java,PDF】使用Itext实现PDF文件生成

    重要声明:本文章仅仅代表了作者个人对此观点的理解和表述.读者请查阅时持自己的意见进行讨论. 前言 有时候,业务系统要求提供一个PDF文件导出的功能,这时候我们就需要将数据库的对应数据查询出来,然后生成 ...

  7. java生成sm2证书_(转载)Java使用IText实现PDF签章

    前文讲到了如何使用Adobe的PDF工具软件进行电子印章应用.在实际应用中还有一种情形就是需要将电子印章功能集成在我们开发的系统里,这里就要用到一些PDF的二次开发库了.做过相关开发的同学应该知道常用 ...

  8. (三)、IText通过pdf模板生成pdf文件(可用做回执单等功能)

    一.首先制作一个pdf模板 先用word做出个模板界面, 文件另存为pdf格式文件 通过Adobe Acrobat DC软件打开刚刚用word转换成的pdf文件步骤:文件->创建->创建表 ...

  9. java利用iText写pdf并上传阿里云OSS并下载

    iText是用于生成pdf的一个类库,通过它可以生成pdf或者将XML , HTML转换城pdf模版:阿里云的oss对象存储存储的类型比较多了,可以存储音频 图片 pdf excel 等资源,oss本 ...

  10. Spring Boot Freemark HTML 生成 PDF、生成水印Logo、docx文件生成PDF,Jar包运行可读取模板文件、字体文件

    用于通过模板生成PDF,在项目中生成个人授权协议函.个人电子保单.流水报表,数据报表等,将HTML静态模板写出来后,将数据替换成动态数据即可. <!-- html2pdf --> < ...

最新文章

  1. 01背包模板、全然背包 and 多重背包(模板)
  2. 笔记-项目整体管理-项目工作说明书
  3. 【推荐系统】KDD2021推荐系统论文集锦
  4. 阿里云贾扬清:大数据+AI工程化,让数据从「成本」变为「资产」
  5. 关于CS1061报错(XX不包含XXX的定义,并且找不到类型为XX的第一个参.....)的一种可能的解决的办法...
  6. 改进的冒泡排序算法一
  7. 事务Transaction 那点事儿
  8. 服务器虚拟化相关技术介绍,虚拟化技术介绍
  9. LED的基本操作(138译码器 573锁存器)
  10. [MATLAB]数值计算
  11. 让游戏通过红蓝立体眼镜展现立体效果
  12. 实验一:MongoDB的基本操作
  13. 金立Android版本,金立amigo为国内首个安卓5.0手机操作系统
  14. Android 开发 VectorDrawable 矢量图 (三)矢量图动画
  15. 涉密计算机等级如何确定,涉密信息系统的等级由()确定。
  16. VS 点击文件自动定位到解决方案资源管理器中文件所在目录位置
  17. 面试中关于Redis的问题
  18. “智医助理”噱头>实用性?详解科大讯飞医疗新布局
  19. Python打印九九乘法表---左上三角、左下三角、右上三角、右下三角形格式
  20. java计算机毕业设计大学生学籍管理系统源码+系统+lw文档+mysql数据库+部署

热门文章

  1. 怎么把PDF转换成JPG图片?这个方法你了解吗
  2. html编辑器菜鸟工具,富文本编辑器TinyMCE菜鸟使用教程
  3. PPT背景填充的几种方式,简单高效
  4. github 使用笔记之高级搜索、项目跳转到在线 IDE -- 网页版 VS code
  5. excel 导出PDF ExportAsFixedFormat函数 报错-2147024809 (0x80070057)
  6. b 站视频下载神器合集,支持电脑和手机端
  7. 在matlab中如何线性回归分析,MATLAB工具箱中进行多元线性回归分析的命令为 ( )?...
  8. 华为freebuds4i降噪方法分享(教程分享)
  9. PPT中如何插入页码和母版修改
  10. 查看Android手机CPU框架信息