基于itext7导出pdf实现,支持水印、中文等
2016-07-30 12:42
603 查看
完整源码: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))); } } }
相关文章推荐
- Android SDK 百度地图通过poi城市内检索简介接口的使用
- Android实现带列表的地图POI周边搜索功能
- Android百度地图poi范围搜索
- Android 百度地图POI搜索功能实例代码
- Java使用poi操作excel实例解析
- Java 使用poi把数据库中数据导入Excel的解决方法
- java使用POI读取properties文件并写到Excel的方法
- java使用poi读取ppt文件和poi读取excel、word示例
- Java中使用Apache POI读取word文件简单示例
- POI WORD
- 利用POI实现Word和 Html互转(可以实现在线预览)
- POI封装二:导出 Export
- java生成word文档【一】
- java生成word文档【二】
- 使用POI修改Excel后进行保存
- Java 实现导出excel表
- java POI实现excle 强制换行