基于itext7导出pdf实现,支持水印、中文等

完整源码:http://download.csdn.net/detail/liuwenfeng554/9590212

itext7导出pdf:



public class ExportReportPdfUtil {

	static PdfFont helvetica = null;
    static PdfFont helveticaBold = null;
    static DecimalFormat df = new DecimalFormat("#0.00");
 
    /**
     * @Title: exportPdf
     * @Description: 生成pdf,提示下载
     * @param fileName 标婷
     * @param spreadhead
     * @param subhead
     * @param tables
     * @param response
     */
	public static void exportPdf(String fileName,String spreadhead, String subhead, List<PDFTable> tables, HttpServletResponse response){
		try{
			// 设置response参数,可以打开下载页面
			response.reset();
	        response.setContentType("application/pdf;charset=utf-8");  
	        response.addHeader("Content-Disposition","attachment;filename="+ new String( fileName.getBytes("gb2312"), "ISO8859-1"));
	        //处理中文问题
	        helvetica = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H", false);
	        helveticaBold = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H", false);
			PdfWriter writer = new PdfWriter(response.getOutputStream());
	        //Initialize PDF document
	        PdfDocument pdf = new PdfDocument(writer);
	        pdf.addEventHandler(PdfDocumentEvent.END_PAGE, new ReportEventHandler());
	        // Initialize document
	        Document document = new Document(pdf);
	        //加载报告内容
	        loadReport(spreadhead, subhead, tables, document);
	        document.close();
	        writer.close();
	        pdf.close();
		}catch(Exception e){
	        e.printStackTrace();
	    }
	 
    }
	
	public static void loadReport(String spreadhead, String subhead, List<PDFTable> tables, Document document){
		//大标题
		Paragraph p = new Paragraph(spreadhead).setTextAlignment(TextAlignment.CENTER).setFont(helveticaBold).setFontSize(14);
        document.add(p);
        //副标题
        document.add(new Paragraph(subhead).setFont(helvetica).setFontSize(8));
        //初始化详情内容
        for (PDFTable pdfTable : tables) {
        	loadTitle(pdfTable.getTitle() , document);
            Table table = new Table(pdfTable.getNumColumns());
            table.setWidthPercent(pdfTable.getWidthPercent());
            List<PDFColumn> columns = pdfTable.getColumns();
            for (PDFColumn pdfColumn : columns) {
            	if(pdfColumn.isBold){
            		process(table, pdfColumn.getText() , helveticaBold, pdfColumn.isHeader());
            	}else{
            		process(table, pdfColumn.getText() , helvetica, pdfColumn.isHeader());
            	}
			}
            document.add(table);
		}
        
	}
	
	/***
	 * @Title: title
	 * @Description: 添加标题
	 * @param text
	 * @param document
	 */
	public static void loadTitle(String text, Document document){
		 document.add(new Paragraph(text).setFont(helvetica).setBold().setFontSize(12));
	}
 
	/**
	 * @Title: process
	 * @Description: 处理table
	 * @param table
	 * @param text
	 * @param font
	 * @param isHeader
	 */
    public static void process(Table table, String text, PdfFont font, boolean isHeader) {
    	if (isHeader) {
            table.addHeaderCell(new Cell().add(new Paragraph(text).setFont(font)).setFontSize(9).setBorder(new SolidBorder(Color.BLACK, 0.5f)).setBold());
        } else {
            table.addCell(new Cell().add(new Paragraph(text).setFont(font)).setFontSize(9).setBorder(new SolidBorder(Color.BLACK, 0.5f)));
        }
    }
}



  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值