最近项目需求,将文档做已修改并以pdf格式输出,自己就从网上搜了下,自己写了demo
一、引入jar
我的项目是maven构建的,这里是我导出pdf所需要的jar
<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.itextpdf/itext-asian -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
二、上干货,码代码
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import com.itextpdf.text.Chunk;
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.Phrase;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfGState;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import com.itextpdf.text.pdf.PdfWriter;
public class Test1 {
public static void main(String[] args) throws Exception {
imageWaterMark(createPDF(), "D://1.jpg");
}
/**
* 创建PDF文档
* @return
* @throws Exception
* @throws docException
*/
public static String createPDF() throws Exception {
//输出路径
String outPath = "D://test1.pdf";//DataUtil.createTempPath(".pdf");
//设置纸张
Rectangle rect = new Rectangle(PageSize.A4);
//创建文档实例
Document doc=new Document(rect);
//添加中文字体
BaseFont bfChinese=BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
//设置字体样式
Font textFont = new Font(bfChinese,11,Font.NORMAL); //正常
Font redTextFont = new Font(bfChinese,11,Font.NORMAL); //正常,红色
Font boldFont = new Font(bfChinese,11,Font.BOLD); //加粗
Font redBoldFont = new Font(bfChinese,11,Font.BOLD); //加粗,红色
Font firsetTitleFont = new Font(bfChinese,22,Font.BOLD); //一级标题
Font secondTitleFont = new Font(bfChinese,15,Font.BOLD); //二级标题
Font underlineFont = new Font(bfChinese,11,Font.UNDERLINE); //下划线斜体
//手指图片
Image hand = Image.getInstance("D:\\0.05.png");
hand.setWidthPercentage(10);
//创建输出流
PdfWriter.getInstance(doc, new FileOutputStream(new File(outPath)));
doc.open();
doc.newPage();
//段落
Paragraph p1 = new Paragraph();
//短语
Phrase ph1 = new Phrase();
//块
Chunk c1 = new Chunk("*********", boldFont) ;
Chunk c11 = new Chunk("(信用报告提供机构l ogo)", textFont) ;
//将块添加到短语
ph1.add(c1);
ph1.add(c11);
//将短语添加到段落
p1.add(ph1);
//将段落添加到短语
doc.add(p1);
p1 = new Paragraph();
ph1 = new Phrase();
Chunk c2 = new Chunk("报告编号:", boldFont) ;
Chunk c22 = new Chunk("SN-201604010001", textFont) ;
ph1.add(c2);
ph1.add(c22);
p1.add(ph1);
doc.add(p1);
p1 = new Paragraph("企业信用报告", firsetTitleFont);
p1.setLeading(50);
p1.setAlignment(Element.ALIGN_CENTER);
doc.add(p1);
p1 = new Paragraph("(企业版)", textFont);
p1.setLeading(20);
p1.setAlignment(Element.ALIGN_CENTER);
doc.add(p1);
p1 = new Paragraph();
p1.setLeading(20);
p1.setAlignment(Element.ALIGN_CENTER);
ph1 = new Phrase();
Chunk c3 = new Chunk("查询时间:", boldFont) ;
Chunk c33 = new Chunk("2016-04-01 00:00:00", textFont) ;
Chunk c4 = new Chunk(leftPad("查询人:", 10), boldFont) ;
Chunk c44 = new Chunk("admin(用户登录名)", textFont) ;
ph1.add(c3);
ph1.add(c33);
ph1.add(c4);
ph1.add(c44);
p1.add(ph1);
doc.add(p1);
p1 = new Paragraph("报告说明", secondTitleFont);
p1.setLeading(50);
p1.setAlignment(Element.ALIGN_CENTER);
doc.add(p1);
p1 = new Paragraph("