简介: 如果您的应用程序需要动态生成 PDF 文档,那么您需要 iText 库。开源的 iText 库使得 PDF 的创建变得轻松易行。本文介绍了 iText 并提供了一个使用它从 Java 技术应用程序生成 PDF 文档的分步指南。我们将创建一个样例应用程序来更好地理解 iText。

2012 年 10 月 30 日 - 作者更新了本文,以体现针对 iText V5.3.0 版的更改(最初的文章使用了 iText V1.3 版本)。

许多应用程序都要求动态生成 PDF 文档。这些应用程序涵盖从生成客户对帐单并通过电子邮件交付的银行到购买特定的图书章节并以 PDF 格式接收这些图书章节的读者。这个列表不胜枚举。在本文中,我们将使用 iText Java 库生成 PDF 文档。我们将向您演示一个样例应用程序,以便您可自行完成它并能更好地理解它。

熟悉 iText V5.3.0 版

iText 是一个可从 http://itextpdf.com/ 免费获取的 Java 库(请参见 参考资料)。iText 库非常强大,且支持生成 HTML、RTF 和 XML 文档,还支持生成 PDF 文档。您可以选择各种各样的字体来用于文档中。另外,iText 的结构允许您使用相同代码生成上面提及的任何类型的文档。

iText 库包含使用各种字体生成 PDF 文本、在 PDF 文档中生成表格、向页面中添加水印等的类。iText 还提供了其他许多特性。在一篇文章中无法演示所有这些特性。我们将介绍生成 PDF 所需的基本知识。有关更多详细信息,请参阅供应商提供的文档(参见 参考资料)。

我们将使用 Eclipse 开发我们的样例应用程序。作为一个开源 IDE,Eclipse 可免费获取且非常强大。您可立即下载 Eclipse(参见 参考资料)。

os-javapdf-itextsample.jar下载

具体下载目录在 /2013年资料/9月/24日/从 Java 应用程序动态生成 PDF 文件

iText API:详细了解

com.itextpdf.text.Document 是用于生成 PDF 文档的主要类。这是第一个需要实例化的类。创建文档之后,您需要一个编写器来向其中写入信息。com.itextpdf.text.pdf.PdfWriter 是一个 PDF 编写器。下面提供了其他一些常用的类:

com.itextpdf.text.Paragraph:此类表示一个缩进的段落。

com.itextpdf.text.Chapter:此类表示 PDF 文档中的一章。使用 Paragraph 作为标题、int 作为章节编号来创建该类。

com.itextpdf.text.Font:此类包含一种字体的所有规范,比如字体集、字号、样式和颜色。各种字体都在此类中声明为静态常量。

com.itextpdf.text.List:此类表示一个列表,反过来,该列表又包含许多 ListItems。

com.itextpdf.text.pdf.PDFPTable:这是一个表格,可放在一个绝对位置上,也可作为类 Table 添加到文档中。

com.itextpdf.text.Anchor:一个 Anchor 可能是一个引用,或是一个引用的目标。

在 Eclipse 中下载和配置 iText

作为一个纯 Java 库,iText 以 JAR 文件的形式提供(参见 参考资料)。下载该库之后(假设下载到路径 C:\temp),使用以下步骤在 Eclipse 环境中配置 iText 库:

在 Eclipse 中创建一个名为 iText 的新 Java 项目。

右键单击 Package Explorer 视图中的 iText 项目,选择 Properties。

单击 Java Build Path。在 Libraries 选项卡上,单击 Add External JARs。

找到 C:\temp 目录并选择此目录中的 itext-5.3.0.jar。

单击 OK。

iText 现在已配置,Eclipse 已准备好创建 Java 应用程序来生成动态的 PDF 文档。

java在linux生成pdf文件,从 Java 应用程序动态生成 PDF 文件相关推荐

  1. Linux字符驱动中动态分配设备号与动态生成设备节点

    在编写Linux内核驱动程序的时候,如果不动态生成设备号的话,需要自己手动分配设备号,有可能你分配的设备号会与已有设备号相同而产生冲突.因此推荐自动分配设备号.使用下面的函数: int alloc_c ...

  2. 微信小程序动态生成页面2020-04-13

    微信小程序动态生成页面 我最近自己在做小程序参加竞赛,然后记录下自己的心得,希望对在座的各位有点帮助吧.然后我的Q:2991194667,有问题可以一起探讨. 1.首先是我打算做一个瀑布流的布局,像淘 ...

  3. python3动态生成变量_【转载】 Python动态生成变量

    用Python循环创建多个变量, 如创建 a1=   .a2=   .a3=   .a4=   .a5=    或  self.a1=    .self.a2=   . self.a3= 一. 可以通 ...

  4. java使用linux常用命令_linux常用Java程序员使用命令(一)

    pwd 显示当前路径 cd切换目录 . .. ~ ls显示文件(夹) -l 显示详细信息 -a显示全部,包括隐藏文件(夹) mkdir创建文件夹 -p递归创建 touch创建空白文件 echo cat ...

  5. java生成word文档_Java多种方式动态生成doc文档

    本来是要在Android端生成doc的(这需求...),最后方法没有好的方法能够在Android上做到完美,最后还是只能搬迁到服务器.不浪费,还是记录下各框架不支持Android的原因以及他们的特点. ...

  6. 【Java进阶】有哪些方法可以在运行时动态生成一个Java类?

    在开始今天的学习前,我建议你先复习一下专栏第 6 讲有关动态代理的内容.作为 Java 基础模块中的内容,考虑到不同基础的同学以及一个循序渐进的学习过程,我当时并没有在源码层面介绍动态代理的实现技术, ...

  7. 【错误记录】Flutter 混合开发报错 ( java.nio.file.FileSystemException: xxx/R.jar: 另一个程序正在使用此文件,进程无法访问。 )

    文章目录 一. 报错信息 二. 解决方案 一. 报错信息 Flutter 混合开发项目 : 在 Android 项目中 , 嵌入了 Flutter 页面 , 不小心运行了下 Flutter 项目 , ...

  8. VB文件上传服务器程序,vb60上传文件到服务器

    vb60上传文件到服务器 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器上分别安装数 ...

  9. 为什么c语言读文件少内容,这个程序为什么在读文件时候读不全数据?

    已结贴√ 问题点数:10 回复次数:7 这个程序为什么在读文件时候读不全数据? txt(数据): 4700.7100     -16.801     73.331    115.494     37. ...

最新文章

  1. Codeforces Round #171 (Div. 2)
  2. 设计模式复习-装饰模式
  3. ASP.NET 链接 Access 数据库路径问题最终解决方案
  4. springboot webservice接口调用_springboot远程调用dubbo服务接口
  5. web.xml中的所有配置,Listener和Filter的加载顺序
  6. STL总结 (C++)
  7. activeMQ相关配置与相关知识
  8. ASP.NETCore编程实现基本认证
  9. LeetCode 1921. 消灭怪物的最大数量(排序)
  10. 求带权中位数的Select算法
  11. leetcode - 46. 全排列(对vector容器的元素进行搜索,判断是否存在vector中)
  12. anaconda进出某个环境
  13. javaweb + websocket实现客户端
  14. 分享一款灵动微MM32F0010A1T兼容替换STM8S003F3P6
  15. [事务] 事务的传播机制
  16. 剖析美国大片《西部世界》 嵌入式技术应用新高度
  17. 胡晓曼:MindSpore 开源运营与治理 | DEV. Together 2021 中国开发者生态峰会
  18. 极速办公(excel)如何使用SUM函数求和
  19. rem和vw,vh的介绍
  20. 光遇为什么显示服务器连接错误,光遇服务器错误怎么办 光遇服务器错误问题解决办法-游侠手游...

热门文章

  1. [C++基础]039_C++异常处理初级出门+中级进阶
  2. 一次Web请求返回406原因与解决方案
  3. Altium Designer中PCB关于Import Changes报错最终解决方案
  4. 利用Redis锁解决高并发问题
  5. VB6.0中,DTPicker日期、时间控件不允许为空时,采用文本框与日期、时间控件相互替换赋值(解决方案)
  6. [转] Gmail 的Host解决方案
  7. 微众银行在联邦推荐算法上的探索及应用(文末附PPT下载链接)
  8. 【网友投稿】大家都在谈裁员,我却默默干倒了3家公司!
  9. crc错误 modbus poll_干货丨从Modbus开始说现场总线!
  10. 修改个人信息 python_python函数练习——个人信息修改