我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 盖世程序员 > Java如何动态生成PDF文件
总共48086条微博

动态微博

查看: 1120|回复: 3

Java如何动态生成PDF文件

[复制链接]

96

主题

7

听众

406

金钱

四袋长老

该用户从未签到

跳转到指定楼层
楼主
发表于 2015-08-13 21:12:47 |只看该作者 |倒序浏览
如果应用程序需要动态生成 PDF 文档,则需要 iText 库。开放源码的 iText 库使 PDF 文档的创建能够在瞬间完成。本文介绍了 iText 并提供了使用它从 java ? 技术应用程序生成 PDF 文档的由浅入深的指南。我们创建了一个示例应用程序以更好地理解 iText。
; U; o  }* X  I7 I$ p  R: T, Q) t很多应用程序要求动态生成 PDF 文档。这类应用程序包括银行生成用于电子邮件投递的客户报表,到读者购买特定图书章节并以 PDF 格式接收这些文档。例子罗列下去是很多的。在本文中,将使用 iText Java 库生成 PDF 文档,并引导您完成一个示例应用程序,以使您能够更好地理解和使用 iText。
- m: m8 r; M7 Y9 w+ d: J+ u熟悉 iText
. ^; a+ y1 _; ]5 L' X0 L  oiText 是 Lowagie.com 站点(请参阅 参考资料)免费提供的 Java 库。iText 库的功能很强大,支持 HTML、RTF 和 XML 文档的生成,此外还能够生成 PDF 文档。可以从多种字体中选择文档中所使用的字体。同时,iText 的结构允许使用相同的代码生成以上任意类型的文档。5 m4 n8 W8 m7 m1 p; X. R
iText 库中的类用于以各种字体来生成 PDF 文本、在 PDF 文档中生成表格、为页添加水印等。iText 还提供许多功能。在一篇文章中不可能一一演示。本文中将介绍生成 PDF 文档的基本需求。
5 W, S# I9 L/ g- e5 P我们将使用 Eclipse 来进行示例应用程序开发。作为一个开放源码的 IDE,可以免费获得 Eclipse,而且其功能非常强大。现在就可以下载 Eclipse。3 N2 ]: w; s# }( B; i) O5 k
iText API:近距离观察
: n9 E& d" i4 f% Jcom.lowagie.text.Document 是生成 PDF 的主要的类。它是需要使用的第一个类。一旦开始创建文档,将需要一个写入器向文档中写入内容。com.lowagie.text.pdf.PdfWriter 就是一个 PDF 写入器。下面列出了通常需要使用的类:
: Z: ]# l% O+ o4 j# j( H, pcom.lowagie.text.Paragraph —— 这个类表示一个缩进的段落。1 {' W& t: w8 x. z* ~. ~( b; b
com.lowagie.text.Chapter —— 这个类表示 PDF 文档中的章节。使用 Paragraph 作为题目并使用 int 作为章节号码来创建它。
& F- w/ [" @4 L4 Mcom.lowagie.text.Font —— 这个类包含了全部的字体规范,例如字体、大小、样式和颜色。各种字体都在这个类中声明为静态常数。
0 U* v5 i5 U, s1 Kcom.lowagie.text.List —— 这个类表示一个列表,按顺序包含许多 ListItems。
: v# }+ X& Q* V, `- m  gcom.lowagie.text.Table —— 这个类表示包含单元格的表,单元格有序地排列在矩阵中。1 E! ]; s) D' e& Z9 ]! Z- I! H% }. ^
下载 iText 并在 Eclipse 中进行配置
6 @6 }- {7 V' q3 t8 Y作为一个纯粹的 Java 库,iText 是以 JAR 文件的形式出现的(请参阅 参考资料)。一旦下载了这个库(在路径 C:\temp 下),执行下列步骤将会在 Eclipse 环境中配置 iText 库:
9 {' J+ C/ ^% F在 Eclipse 中创建一个新的 Java 项目,将其命名为 iText。* z$ Z  N3 c$ w, n2 m. |# ~
在 Package Explorer 视图中右击 iText 项目,然后选择 Properties。
  w6 H  r4 [- L& F; S单击 Java Build Path。在 Libraries 选项卡中,单击 Add External JARs。5 N, {; y/ H6 d% Q, b* y: d
浏览到 C:\temp 目录,选择该目录下的 itext-1.3.jar。
! l% h& }6 ~/ T, X+ f" c+ b0 |单击 OK。7 o. o) {; y/ E6 g& E: q3 V
现在已经配置好 iText,Eclipse 已经准备好创建 Java 应用程序以生成动态 PDF 文档。
: c2 [" _% M+ L* y/ y示例应用程序
1 R6 W/ t+ t  Q9 y还有什么能够比自己动手创建一个工作示例更好地演示技术了?现在有了所需的工具(Eclipse IDE)和库(iText 库),可以开始设计和开发一个示例应用程序了。% n- |4 g. i6 k! Y$ F9 x% Y
让我们创建一个简单的 PDF 文档,其中包含一些基本元素,如纯文本、非默认字体的彩色文本、表格、列表、章节和小节等。此应用程序的目的是让您熟悉 iText 库的使用方式。有很多与帮助生成 PDF 文档有关的类。在这里不可能介绍所有这些类。iText 的 javadoc 是介绍如何使用这些类的很好的资料。下面让我们来开始编写代码。0 p- R. K) q. @0 }8 B
第一步是创建一个文档。文档是 PDF 文档的所有元素的容器。& y/ H. j' Y1 U3 K: t
清单 1. 实例化文档对象6 k, v; v7 z- X; j( |$ J% x! f$ m2 \* e
Document document = new Document(PageSize.A4, 50, 50, 50, 50);! u# t: I3 }  r- H' K, V% d/ [
第一个参数是页面大小。接下来的参数分别是左、右、上和下页边距。但是还没有定义该文档的类型。它取决于所创建的写入器的类型。对于我们的示例,选择了 com.lowagie.text.pdf.PdfWriter。其他写入器为 HtmlWriter、RtfWriter、XmlWriter 等等。它们的名称解释了它们的实际用途。
: p) r$ c* c! ~  W; P清单 2. 创建 PdfWriter 对象/ \+ L+ D, U1 C* w
PdfWriter writer = PdfWriter.getInstance(document, \
5 s* }& u: ]0 F% {6 dnew FileOutputStream("C:\\ITextTest.pdf"));; }% I6 L  D7 ^) z' |
document.open();
$ R+ q# e6 j9 I1 k& {第一个参数是对文档对象的引用,第二个参数是文件的实际名称,在该名称中还会给出其输出路径。接下来,打开文档以写入内容。
. z; D* G' u4 U) {! d0 N( a8 w
1 `1 G+ d( _/ N

科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

4

主题

0

听众

47

金钱

二袋弟子

该用户从未签到

沙发
发表于 2015-11-03 01:51:44 |只看该作者
选个好的 才有保证 这话没错
5 r; x0 [' ?" t( N
2 G. g0 y: r% t# D, x! P* v7 k: R/ X. c  u, S- q

" |1 E6 G- w, r) I, h
# R9 a) p5 p# k3 M1 R6 w2 m
# Z8 n5 v7 f- @6 Q5 u, r
7 ?7 e( H( d0 z2 s2 ~% R7 k  l. V' o2 D

! V* R  Z9 X) D2 V/ k' h6 ?2 N+ Y" {0 t& D% C
& {) g1 [- i2 L! B0 a  E: ~0 ?
: [4 g' q9 |( r6 A3 \  H& R, G4 D
. t0 l& W8 s$ V' k/ e+ q
产品推广,发帖宣传,论坛发帖,网络推广,外链代发。6 u( ]4 k1 o" P) C, _
联-系QQ:188662808# L, M* |. m- n& K# Y
1. 论坛:发帖·顶贴·盖楼·维护·回复·评论·沉帖·负面压制·新闻评论·置顶加精等等~
0 k1 s8 D4 q# _# N2. 微博:加粉·直发·转发·评论·转评·话题·阅读量·投票·收藏·点赞·等等~5 X* W6 k" b6 D, @
3. 微信:加粉·转发·点赞·阅读量·分享·投票·等等~
' ?; `! k9 R( `, ]! m% @8 s/ f; x0 e  b4. 点击:帖子点击率·视频点击率·博客点击率·网站IP·等等~
8 {2 m. n9 L2 H- i/ H2 M$ w3 f% h5. 视频:评论·点赞·等等~/ @* M. b, Y3 Q! e
6. sns :转发·评论·等等~/ E9 i" x; Q- u; M
7. 问答:百度知道·360问答·搜搜问答·等等~
, B- T& O# Y4 ]: @8. 投票:各种网络评选投票·等等~
" P9 G* t' D* Z9. 博客:博客发帖·评论·高等级博客发帖2 a) d& }5 D0 i) w' C' I: ~
10.qq群:各类群发
' `' p% k) O' i% |' Z11.贴吧 :加关注·包月签到·包年签到·提高贴吧排名* G; h" @# \5 w3 s. `$ k
承接各类网络任务!人手多,老手多,多年执行经验,全年无休假。4 C. v, A/ Z# m" C
联系QQ:188662808
回复

使用道具 举报

12

主题

0

听众

200

金钱

三袋弟子

该用户从未签到

板凳
发表于 2015-11-05 21:02:55 |只看该作者
学习学习再学习。步骤很清楚。
回复

使用道具 举报

96

主题

7

听众

406

金钱

四袋长老

该用户从未签到

地板
发表于 2015-11-05 21:16:02 |只看该作者
大李 发表于 2015-11-5 21:02# A% u4 D3 E7 ~6 _( D% x: K9 y
学习学习再学习。步骤很清楚。
8 ~  r, w, j% Y% I! i4 r
哈哈哈 同学
回复

使用道具 举报

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表