需要的JAR包链接:https://www.langhuaquan.com/asset/search/JAVA生成PDF需要的JAR包/
原文链接:https://www.langhuaquan.com/blog/23.html
代码中有两处需要图片,请自行替换。 一个是水印、一个是手指。
下面是预览:
//创建PDF时需要的工具类
public class DataUtil {
/**
* 分割路径
* @param path
* @return 返回分割后的路径
*/
public static String[] separatePath(String path){
if(StringUtils.isBlank(path)){
return null;
}
String[] sep = path.split(".");
return new String[]{sep[0],sep[1]};
}
}
//创建PDF的工具类
package com.workmanagement.util;
import java.awt.Color;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import com.lowagie.text.Cell;
import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.Image;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfGState;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfStamper;
import com.lowagie.text.pdf.PdfWriter;
public class PDFUtil {
public static void main(String[] args) throws Exception {
imageWaterMark(createPDF(), "F://title.jpg");
}
/**
* 创建PDF文档
* @return
* @throws Exception
* @throws docException
*/
public static String createPDF() throws Exception {
//输出路径
String outPath = "F://test.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,Color.RED); //正常,红色
Font boldFont = new Font(bfChinese,11,Font.BOLD); //加粗
Font redBoldFont = new Font(bfChinese,11,Font.BOLD,Color.RED); //加粗,红色
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("F:hand.png");
//创建输出流
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