java导出pdf
来源:互联网 发布:电商数据分析淘宝实战 编辑:程序博客网 时间:2024/06/06 02:16
打印pdf首先要有iText-2.1.7.jar,iTextAsian.jar
首先查询数据把想要打印的数据查询出来
我这里写的是一个task
package com.hengeasy.gris.task;import java.io.File;import java.sql.Date;import java.sql.Timestamp;import java.util.ArrayList;import java.util.HashSet;import java.util.List;import java.util.Locale;import java.util.Map;import java.util.Set;import java.util.logging.Level;import java.util.logging.Logger;import com.hengeasy.commons.bean.User;import com.hengeasy.commons.platform.transaction.Transaction;import com.hengeasy.commons.scheduler.exception.TaskExecutionException;import com.hengeasy.commons.scheduler.task.WorkItem;import com.hengeasy.commons.util.DateTimeUtils;import com.hengeasy.gris.bean.ConsumeLog;import com.hengeasy.gris.dao.ConsumeLogDAO;import com.hengeasy.gris.dao.factory.DAOInstances;import com.hengeasy.gris.messages.GrisMessages;import com.hengeasy.gris.platform.GrisPlatform;import com.hengeasy.gris.transaction.TransactionFactory;import com.hengeasy.gris.util.PdfUtils;import com.hengeasy.profiles.dao.UserDAO;public class ConsumeLogConvertPdfTask extends WorkItem{ public ConsumeLogConvertPdfTask() { super(false); } private static final Logger log = Logger.getLogger(ConsumeLogConvertPdfTask.class.getName()); private static final DAOInstances DAO = new DAOInstances(); private static final UserDAO<User> UserDAO = new com.hengeasy.profiles.dao.factory.DAOInstances().User; private static final ConsumeLogDAO<ConsumeLog> ConsumeLogDAO = DAO.CONSUME_LOG; private static final Locale LOCALE = GrisPlatform.SYSTEM_LOCALE; private static final int YESTERDAY = -1; @Override public void runWork() throws Throwable { if (log.isLoggable(Level.FINER)) { log.entering(ConsumeLogConvertPdfTask.class.getName(), "runWork()"); } Transaction transaction = TransactionFactory.getTransaction(); Date endDate = DateTimeUtils.getCurrentDate(); Date beginDate = DateTimeUtils.calculateDate(endDate, YESTERDAY); try { transaction.begin(); Set<Long> gymIds = ConsumeLogDAO.getGymId(transaction.getConnection(), beginDate, endDate); ; if (gymIds.size() > 0) { // pdf保存路径 File file = new File("c:" + File.separator + beginDate); if (!file.exists()) { file.mkdir(); } Timestamp now = DateTimeUtils.getCurrentTimestamp(); for (Long gymId : gymIds) { List<ConsumeLog> consumeLogs = ConsumeLogDAO.getByGymId(transaction.getConnection(), ConsumeLogDAO.verbosity().PDF_VIEW, gymId, beginDate, endDate); if (consumeLogs != null && consumeLogs.size() > 0) { Set<Long> userIds = new HashSet<Long>(); for (ConsumeLog consumeLog : consumeLogs) { userIds.add(consumeLog.getLastUpdateUser()); } Map<Long, User> users = UserDAO.getByIds(com.hengeasy.profiles.transaction.TransactionFactory.getTransaction().getConnection(), UserDAO.verbosity().SAME_AREA_USERS_VIEW, new ArrayList<Long>(userIds)); //打印pdf调用方法 PdfUtils.consumeLogPdf(consumeLogs, users, file.getPath() + File.separator + gymId + ".pdf"); } } System.out.println("task 执行完毕!"); } transaction.commit(); } catch (Throwable e) { transaction.rollback(); log.log(Level.SEVERE, GrisMessages.RUN_TASK_ERROR_1.formatMessage(LOCALE, new Object[] { ConsumeLogConvertPdfTask.class.getName() }), e); throw new TaskExecutionException(e); } finally { if (log.isLoggable(Level.FINER)) { log.exiting(ConsumeLogConvertPdfTask.class.getName(), "runWork()"); } } }}
打印pdf的类
package com.hengeasy.gris.util;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.util.List;import java.util.Map;import com.hengeasy.commons.bean.User;import com.hengeasy.gris.bean.ConsumeLog;import com.hengeasy.gris.bean.Order.PayStyle;import com.lowagie.text.BadElementException;import com.lowagie.text.Cell;import com.lowagie.text.Document;import com.lowagie.text.DocumentException;import com.lowagie.text.Element;import com.lowagie.text.Font;import com.lowagie.text.PageSize;import com.lowagie.text.Paragraph;import com.lowagie.text.Table;import com.lowagie.text.pdf.BaseFont;import com.lowagie.text.pdf.PdfWriter;public class PdfUtils{ private static final String CONSUMELOG_TITLE[] = { "操作员", "消费者", "金额", "会员卡号", "会员卡余额", "日期", "消费类型" }; private static final float WIDTH = 30f; private static final float[] widths = new float[] { 1f * WIDTH, 1f * WIDTH, 1f * WIDTH, 1.5f * WIDTH, 1f * WIDTH, 1f * WIDTH, 1f * WIDTH }; private static final String THIRDPARTY_PAY = "第三方支付流水"; private static final String MEMBER_CARD = "会员卡支付流水"; private static final String CASH = "现金支付流水"; private static final String AMOUNT = "金额 : "; private static BaseFont bfChinese; private static Font titleFont; private static Font contextFont; static { try {// 设置中文字体 bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); // 正文字体风格 contextFont = new Font(bfChinese, 5, Font.NORMAL); // 标题字体风格 titleFont = new Font(bfChinese, 6, Font.NORMAL); } catch (DocumentException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void consumeLogPdf(List<ConsumeLog> consumeLogs, Map<Long, User> users, String path) throws DocumentException, IOException { Document document = getDocument(path); // 打开文档。 document.open(); Table tableOne = createTable(widths.length, widths); Table tableTwo = createTable(widths.length, widths); Table tableThree = createTable(widths.length, widths); // 表的标题栏 createTbaleTitle(tableOne, CONSUMELOG_TITLE); createTbaleTitle(tableTwo, CONSUMELOG_TITLE); createTbaleTitle(tableThree, CONSUMELOG_TITLE); // 表的数据 double thirdparty_pay_coount = 0; double member_card_count = 0; double cash_cout = 0; for (ConsumeLog consumeLog : consumeLogs) { if (PayStyle.THIRDPARTY_PAY.equals(consumeLog.getPayStyle())) { // 第三方支付方式 createTbaleDate(tableOne, consumeLog, users); thirdparty_pay_coount += consumeLog.getCost(); } else if (PayStyle.MEMBER_CARD.equals(consumeLog.getPayStyle())) { // 会员卡 createTbaleDate(tableTwo, consumeLog, users); member_card_count += consumeLog.getCost(); } else { // 现金支付 createTbaleDate(tableThree, consumeLog, users); cash_cout += consumeLog.getCost(); } } document.add(getParagraph(THIRDPARTY_PAY, titleFont, Element.ALIGN_LEFT)); // 第三方支付删除会员卡与会员卡余额 tableOne.deleteColumn(3); tableOne.deleteColumn(3); document.add(tableOne); document.add(getParagraph(AMOUNT + thirdparty_pay_coount + "\n\n\n\n", titleFont, Element.ALIGN_RIGHT)); document.add(getParagraph(MEMBER_CARD, titleFont, Element.ALIGN_LEFT)); document.add(tableTwo); document.add(getParagraph(AMOUNT + member_card_count + "\n\n\n\n", titleFont, Element.ALIGN_RIGHT)); document.add(getParagraph(CASH, titleFont, Element.ALIGN_LEFT)); // 现金支付删除会员卡与会员卡余额 tableThree.deleteColumn(3); tableThree.deleteColumn(3); document.add(tableThree); document.add(getParagraph(AMOUNT + cash_cout + "\n\n\n\n", titleFont, Element.ALIGN_RIGHT)); document.close(); } private static Paragraph getParagraph(String title, Font font, int direction) { Paragraph paragraph = new Paragraph(title, font); paragraph.setAlignment(direction); return paragraph; } /** * 创建表的表头 * * @param table * @param title * @throws BadElementException */ private static void createTbaleTitle(Table table, String[] title) throws BadElementException { for (int i = 0; i < title.length; i++) { table.addCell(new Cell(new Paragraph(title[i], contextFont))); } } /** * 创建表的数据 * * @param table * @param consumeLog * @param users * @param count * @throws BadElementException */ private static void createTbaleDate(Table table, ConsumeLog consumeLog, Map<Long, User> users) throws BadElementException { // "操作员", "消费者", "金额", "会员卡号", "会员卡余额", "日期","消费类型"; table.addCell(new Cell(new Paragraph(users.get(consumeLog.getLastUpdateUser()).getName(), contextFont))); table.addCell(new Cell(new Paragraph(consumeLog.getName(), contextFont))); table.addCell(new Cell(new Paragraph(String.valueOf(consumeLog.getCost()), contextFont))); table.addCell(new Cell(new Paragraph(String.valueOf(consumeLog.getMemberCardNo()), contextFont))); table.addCell(new Cell(new Paragraph(String.valueOf(consumeLog.getBalance()), contextFont))); table.addCell(new Cell(new Paragraph(consumeLog.getSysCreateDate().toString() .substring(0, consumeLog.getSysCreateDate().toString().indexOf(".")), contextFont))); table.addCell(new Cell(new Paragraph(consumeLog.getCostType().getCostTypeName(), contextFont))); } /** * 初始化表 * * @param table * @throws BadElementException */ private static Table createTable(int cell, float[] widths) throws BadElementException { Table table = new Table(cell); table.setWidths(widths); table.setWidth(100);// 占页面宽度比例 table.setBorder(0); // table.setBorderWidth(0);// 边框宽度 table.setAlignment(Element.ALIGN_CENTER);// 居中 // table.setAlignment(Element.ALIGN_MIDDLE);// 垂直居中 table.setAutoFillEmptyCells(true);// 自动填满 // table.setLockedWidth(true); table.setPadding(2.2f); return table; } private static Document getDocument(String path) throws DocumentException, IOException { // 建立com.lowagie.text.Document对象的实例。 Document document = new Document(PageSize.A4, 20, 20, 0, 0); // 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。 PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(new File(path))); // 设置页页事件监听器 // writer.setPageEvent(new PDFUtil()); return document; }}
0 0
- JAVA 导出PDF文件
- Java实现Pdf导出
- java导出pdf
- java导出pdf
- java PDF文件导出
- java 导出PDF
- java导出pdf
- java 导出pdf
- java导出PDF文件
- java导出pdf
- Java导出PDF文件
- Java导出Pdf范例
- java导出pdf文档
- java导出pdf
- java导出pdf
- java导出pdf
- java导出pdf
- Java导出pdf表格
- 网络获取加载图片的三种方法
- 如何在移动端调试网页?
- 阿里云部署Django项目(超详细图文教程) —— Part2. 使用Nginx, Gunicorn, virtualenv, supervisor 部署Django应用
- C++迭代器
- java 线程
- java导出pdf
- Set 接口 源代码
- Cygwin各种情况下中文乱码终极解决方案
- 顺序表的实现
- MD5
- Mysql索引介绍及常见索引类别(主键索引、唯一索引、普通索引、全文索引、组合索引)的区别
- Lua中的weak表——weak table
- 开发者如何高效利用GitHub
- 关于Android中ImageView中tint属性的一点点整理