近来项目完成自己学些itext打印pdf,主要是因为普通打印不能满足要求,比如有的用户要求我要打印查询出来所有的记录,而用普通的页面打印方式又只能打印当前页面,如果数据是四五个页面的大小普通打印就不能满足要求了,以前也用过免费的web打印,但是还是会有些问题不能解决,更为要命的是别人的东西拿来就用,能满足要求固然是好事,否则你的麻烦就要来了。一旦出现错误就没有办法补救了,所以还是得自己想办法用自己会的东西才是最安全的。
itext 做pdf其实也比较简单,最重要的就是个Document对象,把他的生成过程了解清楚就可以自己动手写东西。
下面是我的代码:
package com.xuning.pdf.test;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.ExceptionConverter;
import com.lowagie.text.Font;
import com.lowagie.text.PageSize;
import com.lowagie.text.Phrase;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfPageEventHelper;
import com.lowagie.text.pdf.PdfTemplate;
import com.lowagie.text.pdf.PdfWriter;
/**
* itext 实现pdf打印功能,这里我没有写成action或是servlet类
* 如果要设置成可以在页面上进行下载的就要在action 或是servlet中进行设置
* 设置成可下载的就可以了。还有一种方式也是比较好的,就是加载xml文件的形式进行
* 生成pdf文件,不过这种方式你要写各种类来解释xml各种元素。
* @author 徐宁 luoyuexiaoxiao@yahoo.com.cn
*/
public class PdfExport extends PdfPageEventHelper {
public PdfTemplate tpl;
public BaseFont bf;
private static BaseFont bfChinese;
public static BaseFont arial;
private static Font fontCN;
private static Font fontCN1;
private static Font font;
private static Font font1;
//类执行时就初始化这个块
static {
try {
bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
fontCN = new com.lowagie.text.Font(bfChinese, 14,com.lowagie.text.Font.BOLD);
fontCN1 = new com.lowagie.text.Font(bfChinese, 8,com.lowagie.text.Font.NORMAL);
font = new Font(bfChinese, 12f, Font.BOLD);
font1 = new Font(bfChinese, 10f, Font.NORMAL);
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@SuppressWarnings("unchecked")
public static void main(String[] args) throws Exception {
PdfExport pe = new PdfExport();
Document document = new Document(PageSize.A4);
try {
FileOutputStream os = new FileOutputStream("批量查询结果列表.pdf");
PdfWriter writer = PdfWriter.getInstance(document, os);
writer.setPageEvent(new PdfExport());
writer.setViewerPreferences(PdfWriter.HideMenubar);
document.open();
PdfPTable tab1 = pe.setTableBody(new ArrayList(0));
document.add(tab1);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (Exception de) {
de.printStackTrace();
} finally {
if (document != null) {
document.close();
}
}
}
/**
* 设置标题方法,实际应用中通过传入参数进行设置
* @return
*/
private PdfPTable setTiteAndDate(String titleName){
PdfPTable titleTable = new PdfPTable(1);
int table[] = { 100 };
try {
titleTable.setWidths(table);
titleTable.setWidthPercentage(100);
titleTable.setSpacingBefore(5f);// 设置标题和第一个表格间的距离.不然会粘在一起
PdfPCell pdfcell = new PdfPCell(new Phrase(titleName, fontCN));
pdfcell.setBorder(0);
pdfcell.setHorizontalAlignment(Element.ALIGN_CENTER);
titleTable.addCell(pdfcell);
PdfPCell pdfcell1 = new PdfPCell(new Phrase("日期:"+ getDifferentTime(null), fontCN1));
pdfcell1.setHorizontalAlignment(Element.ALIGN_LEFT);
pdfcell1.setBorder(0);
titleTable.addCell(pdfcell1);
} catch (Exception e) {
e.printStackTrace();
}
return titleTable;
}
分享到:
相关推荐
**标题:“iText实现PDF打印之二”** 在IT领域,PDF(Portable Document Format)是一种广泛应用的文件格式,用于创建和分享文档,不受操作系统、硬件或软件的影响。iText是一款强大的开源Java库,用于处理PDF文档...
版本5.5.13是其历史版本之一,提供了丰富的API和功能,使得开发者能够方便地在Android平台上生成高质量的PDF文件。本篇文章将详细介绍iTextPDF 5.5.13的核心功能及使用方法,并通过"printPdfTest.java"这个示例代码...
《深入解析iTextPDF 5.5.5:构建PDF文档的强大工具》 在信息化高度发展的今天,PDF作为一种跨平台、格式稳定的文档格式,被广泛应用于各行各业。...对于需要处理PDF文档的开发者来说,iTextPDF是不可或缺的工具之一。
iTextpdf是一款强大的Java库,专门用于生成和编辑PDF文档,同时也支持在Android平台上使用。这个库使得开发者能够轻松地在应用程序中创建、修改和处理PDF文档,包括添加文本、图像、表格、链接等元素。在标题中提到...
在IT行业中,转换数据格式是常见的任务之一,例如将Excel表格转换为PDF文档。这个过程可以方便用户在不使用特定应用程序(如Microsoft Excel)的情况下查看和打印数据。本篇文章将详细探讨如何使用Apache POI和iText...
itext7 html转换为pdf;iText7页码、页眉、页脚,itext 的复杂表格实现;完整springboot项目代码
此外,它还具备将XML、HTML文件转化为PDF的能力,这使得iText成为了处理各类文档的理想工具之一。 ##### 2.2 安装与集成 iText的安装过程极为简单: 1. **下载**:访问官方网站...
本文讲述如何使用SpringBoot集成Freemarker和FlyingSaucer实现PDF在线预览、打印和下载的功能。该技术方案可以应用于各种在线文档预览、报表生成、电子邮件发送等场景。 一、Freemarker模板引擎 Freemarker是Java...
### iText实战(第2版) — Bruno Lowagie #### 概述 《iText实战(第2版)》是一本由Bruno Lowagie撰写的书籍,该书覆盖...无论是在企业级应用还是个人项目中,《iText实战(第2版)》都将成为你宝贵的参考资料之一。
在提供的"mimeograph"压缩包文件中,可能包含了一个简单的Java应用程序,演示了如何使用Java和上述库之一来实现PDF打印。这个程序可能已经配置好了必要的打印设置和逻辑,用户可以直接运行来测试打印功能。 总的来...
在PB中,数据窗口是核心组件之一,用于展示、操作和管理数据库中的数据。本文将深入探讨如何利用PB数据窗口来打印PDF,实现批量静默打印以及自动保存功能。 1. **PB数据窗口打印基础** PB数据窗口提供了丰富的打印...
Java编程语言以其强大的功能和广泛的应用领域而闻名,其中之一就是创建PDF文档。iText是一个流行的开源Java库,专门用于生成和处理PDF文档。这个压缩包“基于java的用iText类库制作PDF文档.zip”显然包含了使用iText...
在Web应用领域,打印功能一直是开发者面临的挑战之一。由于Web应用本质上属于瘦客户端架构,直接操作客户端设备(如打印机)存在限制。这促使业界探索了多种解决方案,包括使用第三方软件、Applet调用API、ActiveX、...
在IT行业中,尤其是在报表生成、电子发票制作以及文档自动化等领域,IText是广泛应用的工具之一。 在描述中提到的“eclipse3.2+myeclipse5.5”是两个流行的Java集成开发环境(IDE)。Eclipse是一个通用的开源IDE,...
使用iTextSharp,开发者可以轻松地实现PDF的读取、写入、合并、拆分以及添加水印、签名等功能。在这个工具中,iTextSharp被用来读取每个PDF发票页面,然后按照指定的排列顺序和尺寸调整,将它们合并到一个新的PDF...
iText 5.5.6的核心功能之一就是PDF的生成。通过使用iText,开发者可以构建复杂的PDF文档,包括添加文本、图像、表格、链接、注释、书签、表单字段等元素。此外,iText还支持PDF的安全性,如设置密码保护、权限控制等...
本书由iText的核心开发者之一Bruno Lowagie撰写,全面覆盖了iText 5版本的功能。 #### 三、iText简介 - **定义**:iText是一款开源的Java库,用于创建、操作和修改PDF文档。它支持多种平台,并且可以集成到各种...