- 浏览: 132501 次
- 性别:
- 来自: 安徽
文章分类
iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。
用iText生成PDF文档需要5个步骤:
① 建立com.itextpdf.text.Document对象的实例。
Document document = new Document();
② 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。
PDFWriter.getInstance(document, new FileOutputStream("Helloworld.PDF"));
③ 打开文档。
document.open();
④ 向文档中添加内容。
document.add(new Paragraph("Hello World"));
⑤ 关闭文档。
document.close();
通过上面的5个步骤,就能产生一个Helloworld.PDF的文件,文件内容为"Hello World"。
用iText生成PDF文档需要5个步骤:
① 建立com.itextpdf.text.Document对象的实例。
Document document = new Document();
② 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。
PDFWriter.getInstance(document, new FileOutputStream("Helloworld.PDF"));
③ 打开文档。
document.open();
④ 向文档中添加内容。
document.add(new Paragraph("Hello World"));
⑤ 关闭文档。
document.close();
通过上面的5个步骤,就能产生一个Helloworld.PDF的文件,文件内容为"Hello World"。
package com.kjlink.util; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.HashMap; import java.util.Map; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Element; import com.itextpdf.text.Font; import com.itextpdf.text.Image; import com.itextpdf.text.PageSize; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPTable; import com.itextpdf.text.pdf.PdfWriter; /** * iText 学习 * Paragraph 缩进的段落 * Chapter PDF文档中的章节 * Font 字体规范 * List 一个列表,顺序包含许多ListItems * Table 单元格的表 * * @author Bing * */ public class PDF4iText { /** * * @param os PDF输出的目录 * * 以下参数是params所对应的Key-value * @param imgPath Logo图片地址 * * @param userName 领用人 * @param userDept 领用部门 * @param borrowTime 领用时间 * @param borrowRemark 领用事由 * @param borrowDate 领用日期 * * @param assetName 固定资产名称 * @param assetModel 固定资产型号 * @param assetConfig 固定资产配置 * @param assetSequence 固定资产序列号 * */ public static void createPDF(OutputStream os, Map<String, String> params) { Document document = new Document(PageSize.A4, 50, 50, 100, 10);// 页面大小,左右上下页边距 try { PdfWriter.getInstance(document, os); // 添加PDF文档的一些信息 document.addTitle("Hello World Example"); // 标题 document.addSubject("This example explains how to add metadata."); // 主题 document.addAuthor("xuxb"); // 作者 document.addCreator("My program using iText"); // 创建者 document.addKeywords("iText"); // 关键字 BaseFont baseFont = BaseFont.createFont("C:\\Windows\\Fonts\\SIMSUN.TTC,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); // BaseFont baseFont = BaseFont.createFont("C:\\Windows\\Fonts\\msyh.ttf",BaseFont.IDENTITY_H,BaseFont.EMBEDDED); // BaseFont baseFont1 = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED); BaseFont baseFont1 = BaseFont.createFont("C:\\Windows\\Fonts\\SIMSUN.TTC,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); Font simsun = new Font(baseFont, 12, Font.NORMAL); Font italic = new Font(baseFont, 10, Font.ITALIC); Font STSong = new Font(baseFont1, 10, Font.NORMAL); Font bold = new Font(baseFont1, 12, Font.BOLD); // 打开文档,将要写入内容 document.open(); float[] f = {40,60}; PdfPTable header = new PdfPTable(f); header.setSpacingBefore(5f); header.setWidthPercentage(100); header.getDefaultCell().setBorder(0); // LOGO KJLink PdfPCell h1 = new PdfPCell(Image.getInstance(params.get("imgPath"))); h1.setBorder(0); h1.setBorderWidthBottom(0.2f); h1.setPaddingTop(25f); // h1.setFixedHeight(100); header.addCell(h1); PdfPCell h2 = new PdfPCell(new Paragraph("固定资产领用单", italic)); h2.setBorder(0); h2.setBorderWidthBottom(0.2f); h2.setPaddingTop(20f); h2.setHorizontalAlignment(Element.ALIGN_RIGHT); header.addCell(h2); document.add(header); PdfPTable table = new PdfPTable(6); // Code 1 table.setWidthPercentage(100); table.setSpacingBefore(10f); // table.getDefaultCell().setBorder(0); table.setHorizontalAlignment(Element.ALIGN_CENTER);// 水平居中 // 第一行 row1 PdfPCell row1 = new PdfPCell(new Paragraph("KJLINK International Co. 固定资产领用单", bold)); row1.setColspan(6); // cell0.setHorizontalAlignment(Element.ALIGN_CENTER); // 设置内容水平居中 row1.setFixedHeight(30); row1.setPadding(5); row1.setHorizontalAlignment(Element.ALIGN_CENTER); // 垂直居中 table.addCell(row1); // 第二行 row2 PdfPCell hCell1 = new PdfPCell(new Paragraph("领用人", simsun)); hCell1.setHorizontalAlignment(Element.ALIGN_CENTER); hCell1.setFixedHeight(25); table.addCell(hCell1); table.addCell(new Paragraph(params.get("userName"), STSong)); PdfPCell hCell2 = new PdfPCell(new Paragraph("领用部门", simsun)); hCell2.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(hCell2); table.addCell(new Paragraph(params.get("userDept"), STSong)); PdfPCell hCell3 = new PdfPCell(new Paragraph("领用时间", simsun)); hCell3.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(hCell3); table.addCell(new Paragraph(params.get("borrowTime"), STSong)); // 第三行 row3 PdfPCell row3 = new PdfPCell(new Paragraph("领用事由:", STSong)); row3.setColspan(6); row3.setFixedHeight(20); row3.setPadding(5); row3.setBorder(0); row3.setBorderWidthLeft(0.2f); row3.setBorderWidthRight(0.2f); // row3.setBorderColorBottom(BaseColor.WHITE); row3.setVerticalAlignment(Element.ALIGN_CENTER); table.addCell(row3); // 第三行 row3 PdfPCell row3_2 = new PdfPCell(new Paragraph(params.get("borrowRemark"), STSong)); row3_2.setColspan(6); row3_2.setBorder(0); row3_2.setFixedHeight(80); row3_2.setPaddingRight(10f); row3_2.setBorderWidthLeft(0.2f); row3_2.setBorderWidthRight(0.2f); // row3_1.setBorderColorTop(BaseColor.WHITE);//ColorTop(BaseColor.RED); row3_2.setHorizontalAlignment(Element.ALIGN_LEFT); row3_2.setPaddingLeft(20f); table.addCell(row3_2); // 第三行 row3 PdfPCell row3_1 = new PdfPCell(new Paragraph("签名: " + params.get("borrowDate"), simsun)); row3_1.setColspan(6); row3_1.setBorder(0); row3_1.setPaddingRight(10f); row3_1.setBorderWidthLeft(0.2f); row3_1.setBorderWidthRight(0.2f); // row3_1.setBorderColorTop(BaseColor.WHITE);//ColorTop(BaseColor.RED); row3_1.setFixedHeight(20); row3_2.setPaddingBottom(6f); row3_1.setHorizontalAlignment(Element.ALIGN_RIGHT); table.addCell(row3_1); // 第四行 row4 PdfPCell row5 = new PdfPCell(new Paragraph("领用资产情况", bold)); row5.setColspan(6); row5.setFixedHeight(25); row5.setPadding(5); row5.setHorizontalAlignment(Element.ALIGN_CENTER); // 垂直居中 table.addCell(row5); // 第五行 row5 PdfPCell cell1 = new PdfPCell(new Paragraph("固定资产名称", simsun)); cell1.setHorizontalAlignment(Element.ALIGN_CENTER); cell1.setFixedHeight(25); table.addCell(cell1); PdfPCell cell2 = new PdfPCell(new Paragraph("型号", simsun)); cell2.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cell2); PdfPCell cell3 = new PdfPCell(new Paragraph("配置", simsun)); cell3.setColspan(2); cell3.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cell3); PdfPCell cell4 = new PdfPCell(new Paragraph("序列号", simsun)); cell4.setColspan(2); cell4.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cell4); // 第五行 动态行 PdfPCell cell21 = new PdfPCell(new Paragraph(params.get("assetName"), STSong)); cell21.setHorizontalAlignment(Element.ALIGN_CENTER); cell21.setFixedHeight(25); table.addCell(cell21); PdfPCell cell22 = new PdfPCell(new Paragraph(params.get("assetModel"), STSong)); cell22.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cell22); PdfPCell cell23 = new PdfPCell(new Paragraph(params.get("assetConfig"), STSong)); cell23.setColspan(2); cell23.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cell23); PdfPCell cell24 = new PdfPCell(new Paragraph(params.get("assetSequence"), STSong)); cell24.setColspan(2); cell24.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(cell24); // 空白行1 table.addCell(" "); table.addCell(" "); PdfPCell blank11 = new PdfPCell(new Paragraph(" ")); blank11.setFixedHeight(25); blank11.setColspan(2); table.addCell(blank11); PdfPCell blank12 = new PdfPCell(new Paragraph(" ")); blank12.setColspan(2); table.addCell(blank12); // 空白行2 table.addCell(" "); table.addCell(" "); PdfPCell blank21 = new PdfPCell(new Paragraph(" ")); blank21.setFixedHeight(25); blank21.setColspan(2); table.addCell(blank21); PdfPCell blank22 = new PdfPCell(new Paragraph(" ")); blank22.setColspan(2); table.addCell(blank22); // 空白行3 table.addCell(" "); table.addCell(" "); PdfPCell blank31 = new PdfPCell(new Paragraph(" ")); blank31.setColspan(2); blank31.setFixedHeight(25); table.addCell(blank31); PdfPCell blank32 = new PdfPCell(new Paragraph(" ")); blank32.setColspan(2); table.addCell(blank32); // 第六行 row6 PdfPCell row6 = new PdfPCell(new Paragraph("分管领导意见:", simsun)); row6.setColspan(6); row6.setFixedHeight(120); row6.setPadding(5); row6.setVerticalAlignment(Element.ALIGN_CENTER); table.addCell(row6); // 第七行 row7 PdfPCell row7 = new PdfPCell(new Paragraph("总裁意见:", simsun)); row7.setColspan(6); row7.setFixedHeight(120); row7.setPadding(5); row7.setVerticalAlignment(Element.ALIGN_CENTER); table.addCell(row7); // 将table添加到document document.add(table); document.add(new Paragraph("KJLink International, Inc", STSong)); document.add(new Paragraph("凯捷技术有限公司 (c)Copyright 2005", STSong)); // System.out.println("生成PDF成功!"); // tips message } catch (FileNotFoundException e) { e.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (document.isOpen()) { document.close(); } } } public static void main(String[] args) throws FileNotFoundException { OutputStream os = new FileOutputStream("D:\\固定资产领用单.pdf"); // 输出PDF到指定位置 Map<String, String> params = new HashMap<String, String>(); // 参数列表 params.put("imgPath", "C:\\Users\\Bing\\Pictures\\KJLink.png"); // Logo图片地址 params.put("userName", "iteye.com"); params.put("userDept", "java频道"); params.put("borrowTime", "11-07-24 10:00"); params.put("borrowRemark", "去深圳出差一个月。"); params.put("borrowDate", "2011年07月24日"); params.put("assetName", "KJ-AA-0001"); params.put("assetModel", "ThinkPad T61"); params.put("assetConfig", "酷睿i5双核,2GDDR3内存,80G硬盘"); params.put("assetSequence", "1111-2222-3333"); PDF4iText.createPDF(os, params); } }
- PDF4iText_110724.zip (1.8 MB)
- 下载次数: 115
发表评论
-
Apache commons简介
2012-08-07 14:43 918原文引自:http://www.blogjava.net ... -
Java Runtime
2011-12-12 13:39 1360关于java runtime.exec() 的讲解 ... -
正则表达式参考大全
2011-08-19 16:25 870^\d+$ //匹配非负整数(正整数 + 0) ... -
JDK环境变量的配置
2011-08-18 10:35 744原文引自:一路悠扬-51CTO技术博客JDK环境变量配置的步骤 ... -
POI HSSF - Excel实例
2011-07-24 11:16 1573生成Excel效果图如下: package com.k ... -
c3p0 apparent deadlock / creating emergency threads
2011-07-15 16:47 3592Code: 2005-09-06@06:29:12.38 ... -
高阶Java枚举类型enum使用详解
2011-06-01 10:23 1618java的Enum枚举类型终于在j2se1.5出现了。之前觉得 ... -
斯坦福大学公开课:编程方法学
2011-05-21 11:38 1055介绍了当代程序设计基本思想:面向对象,模块化,封装 ... -
采用CAS原理构建单点登录
2011-05-07 09:45 1092企业的信息化过程 ... -
HttpClient入门
2011-05-07 09:40 993HttpClient简介 HTTP 协议可能是现在 I ... -
分页代码
2011-05-07 09:29 881法一:使用hibernate框架分页。 接口如下: pu ... -
Comet:基于 HTTP 长连接的“服务器推”技术
2011-05-07 09:22 886周 婷 (mailto:zhouting@cn.ibm.com ... -
程序员必知15件事
2011-05-07 09:00 756作为程序员,要取得非凡成就需要记住的15件事。 1.走一条不 ... -
初学者如何开发出高质量J2EE系统
2011-05-06 12:22 732J2EE学习者越来越多,J2EE本身技术不断在发展,涌现出各种 ... -
J2EE学习中一些值得研究的开源项目
2011-05-06 12:21 664这篇文章写在我研究J2SE ... -
Java IO浅析
2011-05-06 12:19 437什么是流: 流是一个抽象的概念。当Java程序需要从数 ... -
字符串数组与字符串之间的互转(join/split)
2011-05-06 11:56 114091、Java 1-1、字符串数组=>字符串: ... -
JSON与JAVA的数据转换
2011-05-06 11:52 807JSON-lib这个Java类包用于把bean,map和XML ... -
[Java][JavaScript]字符串数组与字符串之间的互转(join/split)
2011-05-06 11:43 21、Java 1-1、字符 ...
相关推荐
同时,`CSDN博客.mht`和`ITeye博客.mht`这两个文件可能包含了使用iTextPDF根据模板生成PDF的示例代码和教程。通常,这类教程会展示如何根据已有的HTML模板或者自定义的逻辑生成PDF,这在生成报告、发票等场景中非常...
首先,iTextPDF的核心在于其 PdfWriter 类,它是生成PDF文件的关键。PdfWriter允许开发者创建一个新的PDF文档,或者向已存在的PDF文档添加内容。通过创建一个PdfWriter实例,开发者可以指定输出流(如文件或内存流)...
在使用iText生成PDF目录时,要注意几点: - 确保每个书签都有一个对应的目标位置,否则在PDF中点击书签可能无法正确跳转。 - 避免内存泄漏,尤其是在处理大量书签时,要及时释放资源。 - 书签层次不宜过深,以免影响...
在IT行业中,生成PDF文件是一项常见的任务,特别是在文档制作、报表导出以及数据展示等领域。iText是一个流行的Java库,专门用于创建和编辑PDF文档。本文将深入探讨iText如何生成包含表格的PDF文件,同时结合提供的...
通常,开发者会使用其他库,如Apache POI,来创建Excel文档,然后结合iText生成PDF。具体实现会涉及到创建`HSSFWorkbook`或`XSSFWorkbook`对象,添加`Sheet`,`Row`和`Cell`,设置样式和数据,最后将工作簿写入输出...
5. **嵌入字体**:在生成PDF的过程中,确保每个使用的字体都被正确地嵌入到PDF文件中。 6. **保存PDF**:最后,关闭`Document`对象并保存PDF文件。 在处理"itexpdf"相关的项目时,这些步骤可以帮助开发者克服中文...
以下是一些关于如何使用iText生成PDF的关键知识点: 1. **安装与获取iText**: 要使用iText,首先需要从其官方源代码托管平台SourceForge下载相应的.jar文件。基础的iText.jar提供了基本的PDF生成功能,但如果你...
共3个方法,一个是生成pdf,第2个是加文字水印,第3个是加图片水印 public static void main(String[] args) { String filepath = "C:\\Users\\igiroad\\Desktop\\申请汇总表 (3).xls"; String pdffilepath = ...
里面包含两个demo实例,分别是itext-pdf生成pdf的,一个是itext-rtf生成word的。其中还附有学习笔记一份,上述生成的文档包括对字体的选择(本地或者iTextAsian里面的),有对图片的添加,有对样式的调整,有对table...
首先,iTextAsian的核心功能在于支持亚洲字符集,如GBK、Big5、UTF-8等,确保在生成PDF或处理文本时能够正确显示中文字符,避免乱码现象。此外,它还提供了丰富的排版和格式化选项,可以方便地进行字体设置、字号...
1. `font-asian-7.1.4.jar`:这个文件包含了对亚洲字体的支持,如中日韩等语言的字体资源,确保在生成PDF时可以正确显示这些地区的文字。 2. `io-7.1.4-javadoc.jar`:这是Itext的输入/输出模块的API文档,提供了...
2. **创建PDF文档**:使用iText生成PDF的第一步是创建一个PdfWriter实例,然后基于该实例创建一个Document对象。例如: ```java Document document = new Document(); PdfWriter.getInstance(document, new ...
总的来说,使用Itext生成PDF文档是一个简单的过程,主要涉及Document对象的创建、Writer实例的初始化、内容的添加以及文档的关闭。通过灵活运用这些方法,我们可以创建出结构丰富、格式多样的PDF文件。在处理中文...
接下来,我们来看看如何生成PDF报表。首先,创建一个新的PDF文档需要一个`Document`对象,这将作为整个PDF的容器: ```java Document document = new Document(); ``` 然后,我们需要一个`PdfWriter`实例,它负责将...
**IText 2.1.7 动态生成PDF实例详解** 在IT行业中,PDF(Portable Document Format)是一种广泛使用的文件格式,它能够保持文档的原始格式,方便跨平台查看和打印。iText是一个强大的开源Java库,用于生成和修改PDF...
在这个实例中,我们看到Itext被用来通过模板生成PDF文件,这种做法可以极大地简化PDF内容的构建过程。 **模板驱动的PDF生成** 模板驱动的PDF生成是一种高效的方法,特别是当需要多次重复类似内容但细节略有不同的...
iText是一个强大的开源Java库,它允许开发人员创建、修改和处理PDF文档,广泛应用于电子发票、报告生成、文档自动化等领域。这本书的第五版提供了关于如何充分利用iText进行PDF编程的深入见解。 书中详细介绍了以下...
2. **报告生成**:开发者可以利用iText动态生成包含复杂布局和数据的PDF报告,而iText-RTF则可以确保这些报告在不支持PDF的环境中仍能以RTF格式查看。 3. **文档迁移**:在需要将大量PDF文档迁移到其他文档管理系统...
**使用iText 7生成PDF** 在IT行业中,PDF(Portable Document Format)是一种广泛用于创建、分享和打印文档的标准格式。iText是一个流行的Java库,它允许开发人员以编程方式生成、修改和处理PDF文件。iText 7是该库...