百度itextpdf工具类,快速生成PDF打印模板,itextpdf5加公章

maven依赖

<dependency>
			<groupId>com.itextpdf</groupId>
			<artifactId>itextpdf</artifactId>
			<version>5.4.2</version>
		</dependency>

		<dependency>
			<groupId>com.itextpdf.tool</groupId>
			<artifactId>xmlworker</artifactId>
			<version>5.4.1</version>
		</dependency>

		<dependency>
			<groupId>com.itextpdf</groupId>
			<artifactId>itext-asian</artifactId>
			<version>5.2.0</version>
		</dependency>

		<dependency>
			<groupId>org.xhtmlrenderer</groupId>
			<artifactId>flying-saucer-pdf</artifactId>
			<version>9.0.3</version>
		</dependency>

1.PDF工具类

package com.exportexcel.utils;

import java.io.IOException;

import org.springframework.stereotype.Repository;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
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.lowagie.text.Cell;

/**
 * @author TANGSHUAI
 * @date 2020年12月12日 下午11:29:46 pdf工具类
 */
@Repository
public class PDFUtils {

	// 蓝色字体
	public static Font blueFont;
	// 小三号
	public static Font smallThreeFont;
	// 小三号加粗
	public static Font smallThreeGreenFont;
	// 五号
	public static Font fiveFont;
	// 五号
	public static Font smallFiveFont;
	// 五号
	public static Font smallSixFont;
	// 小四号 加粗
	public static Font greenFont;
	// 小四号
	public static Font messFont;
	// 标题加粗 四号
	public static Font titleFont;
	static {
		try {
			// 设置中文
			BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
			blueFont = new Font(bfChinese);
			blueFont.setColor(BaseColor.BLUE);
			blueFont.setSize(5);
			smallThreeFont = new Font(bfChinese, 15);
			smallThreeFont.setColor(BaseColor.BLACK);
			smallThreeGreenFont = new Font(bfChinese, 15, Font.BOLD);
			smallThreeGreenFont.setColor(BaseColor.BLACK);
			fiveFont = new Font(bfChinese);
			fiveFont.setColor(BaseColor.BLACK);
			fiveFont.setSize(10.5f);
			smallFiveFont = new Font(bfChinese);
			smallFiveFont.setColor(BaseColor.BLACK);
			smallFiveFont.setSize(9);
			smallSixFont = new Font(bfChinese);
			smallSixFont.setColor(BaseColor.BLACK);
			smallSixFont.setSize(6.5f);
			greenFont = new Font(bfChinese, 12, Font.BOLD);
			greenFont.setColor(BaseColor.BLACK);
			messFont = new Font(bfChinese, 12);
			messFont.setColor(BaseColor.BLACK);
			titleFont = new Font(bfChinese, 20, Font.BOLD);
			titleFont.setColor(BaseColor.BLACK);
		} catch (DocumentException | IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	/**
	 * 创建table
	 * 
	 * @param column
	 * @return
	 */
	public PdfPTable createTable(Integer column) {
		PdfPTable table = new PdfPTable(column);
		// 设置表格宽度
		table.setWidthPercentage(50);
		table.setSpacingBefore(10f);
		table.setSpacingAfter(10f);
		return table;
	}

	/**
	 * 创建table,设置宽度
	 * 
	 * @param column
	 * @param wdith
	 * @return
	 */
	public PdfPTable createTable(Integer column, Integer wdith) {
		PdfPTable table = new PdfPTable(column);
		// 设置宽度
		table.setWidthPercentage(wdith);
		// 设置间距
		table.setSpacingBefore(0);
		return table;
	}

	/**
	 * 创建单元格,标题
	 * 
	 * @param name
	 * @param font
	 * @return
	 */
	public PdfPCell createPdfPCell(String name, Font font) {
		PdfPCell cell;
		// 第一行
		cell = new PdfPCell(new Paragraph(name, font));
		// 设置文字可以居中
		cell.setUseAscender(true);
		// 设置水平居中
		cell.setHorizontalAlignment(Cell.ALIGN_CENTER);
		// 设置垂直居中
		cell.setVerticalAlignment(Cell.ALIGN_MIDDLE);
		// 设置边框
		cell.setBorder(0);
		return cell;
	}
	/**
	 * 封装标题
	 * @param title
	 * @return
	 */
	public PdfPTable createTitle(String title) {
		PdfPTable createTable = createTable(1);
		PdfPCell createPdfPCell = createPdfPCell(title, PDFUtils.titleFont);
		createTable.addCell(createPdfPCell);
		return createTable;
	}

	/**
	 * 创建单元格,不带边框
	 * 
	 * @param name
	 * @param font
	 * @param colspan
	 * @return
	 */
	public PdfPCell createPdfPCell(String name, Font font, Integer colspan, Integer border) {
		PdfPCell cell;
		cell = new PdfPCell(new Paragraph(name, font));
		cell.setHorizontalAlignment(Cell.ALIGN_LEFT); // 设置水平居中
		cell.setVerticalAlignment(Cell.ALIGN_MIDDLE); // 设置垂直居中
		cell.setMinimumHeight(20);// 设置单元格的高度
		cell.setBorderWidth(border);// 设置边框
		cell.setColspan(colspan);// 设置占用几列
		return cell;
	}

	/**
	 * 创建单元格,带边框
	 * 
	 * @param name
	 * @param font
	 * @param colspan
	 * @param border
	 * @return
	 */
	public PdfPCell createPdfPCell(String name, Font font, Integer colspan) {
		PdfPCell cell;
		cell = new PdfPCell(new Paragraph(name, font));
		cell.setHorizontalAlignment(Cell.ALIGN_LEFT); // 设置水平居中
		cell.setVerticalAlignment(Cell.ALIGN_MIDDLE); // 设置垂直居中
		cell.setMinimumHeight(20);// 设置单元格的高度
		cell.setColspan(colspan);
		return cell;
	}

	/**
	 * 报账管理创建表格
	 * 
	 * @param title
	 * @param content
	 * @return
	 */
	public PdfPTable createExpenseManagement(String title, String content) {
		PdfPTable table = createTable(4, 100);
		PdfPCell cell = createPdfPCell(title, PDFUtils.messFont, 1);
		table.addCell(cell);
		PdfPCell cell2 = createPdfPCell(content, PDFUtils.messFont, 3);
		table.addCell(cell2);
		return table;
	}

	/**
	 * 打印审批人
	 * 
	 * @param name
	 * @param conclusion
	 * @param remark
	 * @param date
	 * @return
	 */
	public PdfPTable createApprover(String name, String conclusion, String remark, String date) {
		PdfPTable table = createTable(4, 100);
		PdfPCell cell = createPdfPCell("审批人:" + name, PDFUtils.messFont, 1);
		table.addCell(cell);
		PdfPCell cell2 = createPdfPCell("审批结论:" + conclusion, PDFUtils.messFont, 1);
		table.addCell(cell2);
		PdfPCell cell3 = createPdfPCell("备注:" + remark, PDFUtils.messFont, 1);
		table.addCell(cell3);
		PdfPCell cell4 = createPdfPCell("审批时间:" + date, PDFUtils.messFont, 1);
		table.addCell(cell4);
		return table;
	}
	/**
	 * 公司名称,申请日期
	 * 打印时间,打印人
	 * @param company
	 * @param date
	 * @return
	 */
	public PdfPTable createHead(String content,String content2) {
		PdfPTable createTable = createTable(3, 100);
		PdfPCell createPdfPCell = createPdfPCell(content, PDFUtils.messFont, 1, 0);
		createTable.addCell(createPdfPCell);
		PdfPCell createPdfPCell2 = createPdfPCell(content2, PDFUtils.messFont, 2, 0);
		createTable.addCell(createPdfPCell2);
		return createTable;
	}

}

2.调用工具类

package com.exportpdf;

import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import com.exportexcel.utils.PDFUtils;
import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;

/**
 * @author TANGSHUAI
 * @date 2020年12月14日 下午9:00:49
 * 
 */
@Controller
@RequestMapping("/pdf")
public class leaveRequestController {

	@Autowired
	private PDFUtils pdfUtils;

	@Autowired
	private HttpServletResponse response;

	@GetMapping(value = "/leaveRequest")
	public void leaveRequest() throws Exception {
		// 告诉浏览器用什么软件可以打开此文件
		response.setHeader("content-Type", "application/pdf");
		Document document = new Document();
		PdfWriter.getInstance(document, response.getOutputStream());
		// 打开文档
		document.open();
		// 格式化日期
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		// 创建标题
		PdfPTable createTitle = pdfUtils.createTitle("请假申请");
		document.add(createTitle);
		// 公司名称
		PdfPTable createHead = pdfUtils.createHead("XXXXX有限公司", "申请日期:" + dateFormat.format(new Date()));
		document.add(createHead);
		// 申请人
		PdfPTable createExpenseManagement = pdfUtils.createExpenseManagement("申请人:", "张三");
		document.add(createExpenseManagement);
		// 申请部门
		PdfPTable createExpenseManagement2 = pdfUtils.createExpenseManagement("请假类型:", "病假");
		document.add(createExpenseManagement2);
		// 暂支事由
		PdfPTable createExpenseManagement3 = pdfUtils.createExpenseManagement("开始日期:", "2020-12-11");
		document.add(createExpenseManagement3);
		// 暂支方式
		PdfPTable createExpenseManagement4 = pdfUtils.createExpenseManagement("结束日期:", "2020-12-12");
		document.add(createExpenseManagement4);
		// 暂支金额
		PdfPTable createExpenseManagement5 = pdfUtils.createExpenseManagement("请假销售:", "5");
		document.add(createExpenseManagement5);
		// 还款方式
		PdfPTable createExpenseManagement6 = pdfUtils.createExpenseManagement("请假事由:", "感冒了");
		document.add(createExpenseManagement6);
		// 审批流程
		PdfPTable createTable3 = pdfUtils.createTable(1, 100);
		PdfPCell createPdfPCell4 = pdfUtils.createPdfPCell("审批流程", PDFUtils.messFont, 1);
		createTable3.addCell(createPdfPCell4);
		document.add(createTable3);
		// 打印审批人
		for (int i = 0; i < 4; i++) {
			PdfPTable createApprover = pdfUtils.createApprover("张三", "同意", "通过", dateFormat.format(new Date()));
			document.add(createApprover);
		}
		// 打印时间
		PdfPTable createHead2 = pdfUtils.createHead("打印时间:" + dateFormat.format(new Date()), "打印人:张三");
		document.add(createHead2);
		document.close();
	}
}

3.生成PDF打印模板

在这里插入图片描述
4.itextpdf5加公章

//=====读入并设置印章图片============================
	    Image image = Image.getInstance("D:\\13e317e.png");
	    image.setScaleToFitLineWhenOverflow(true);
	    image.setAlignment(Element.ALIGN_RIGHT);
	    float x = table9.getTotalWidth();
	    float y = 420 - table9.getTotalHeight();
	    System.out.println(table9.getTotalWidth());
	    System.out.println(table9.getTotalHeight());
	    
		image.setAbsolutePosition(x-200 , y);
	    image.scaleAbsolute(100, 100);
	    PdfContentByte pcb = writer.getDirectContentUnder();
	    pcb.addImage(image);
	    document.add(image);
	    document.add(Chunk.NEWLINE);
	    //===================================================

在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值