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

来源:互联网 发布:高清网络监控系统方案 编辑:程序博客网 时间:2024/06/16 10:35

完整源码: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)));        }    }}



3 0