JAVA操作PDF开源项目
-
操作PDF的JAR主要分成两类,分别是iText系列和Apache PDFBox系列
1.1 iText PDF :iText是著名的开放项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为 PDF 文件- iText 5官网,已停止维护。iText5仓库地址
- iText 7官网 。iText7仓库地址
iText 7 与iText 5是两个不同的体系。 iText 5已经暂停维护, iText 5与 iText 7都分为商业版和社区版
1.2 Apache PDFBox,Github。
Apache PDFBox库是用于处理PDF文档的开源Java工具。该项目允许创建新的PDF文档,操纵现有文档以及从文档中提取内容的功能。
Apache PDFBox还提供了几个命令行实用程序。可以说Apache出品必是精品。1.3 OpenPDF
OpenPDF是一个Java库,使用LGPL和MPL开源许可证。可以拥有创建和编辑PDF文件。
OpenPDF是iText的LGPL/MPL开源后继产品,它基于iText 4 svn标签的一个分支。1.4 x-easypdf
x-easypdf基于pdfbox构建而来,极大降低使用门槛,以组件化的形式进行pdf的构建。
简单易用,仅需一行代码,便可完成pdf的操作。是国人开源的一个基于Apache PDFBox的JAR包。 -
操作PDF相关工具
2.1 Jasper Report :是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成 PDFJasperReport是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成 PDF,HTML,或者 XML格式。该库完全由Java写成,可以用于在各种Java应用程序,包括 J2EE,Web应用程序中生成动态内容。
只需要将JasperReport引入工程中即可完成PDF报表的编译、显示、输出等工作。数据源支持更多,
常用JDBC SQL查询、XML文件、CSV文件 、HQL(Hibernate 查询),HBase,JAVA集合等。还允许你义自己的数据源,通过JASPER文件及数据源,JASPER 就能生成最终用户想要的文档格式。2.2 Openoffice :openoffice是开源软件且能在windows和linux平台下运行,可以灵活的将word或者Excel转化为PDF文档。
-
生成可替换pdf
3.1 freemarkerFreeMarker是一款模板引擎:即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,
而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。 -
Word转换为Pdf的几种方式
4.1 利用各种Office应用进行转换JobConverter + OpenOffice ,支持跨平台,免费 (一般格式实现效果还行,复杂格式容易有错位)
SaveAsPDFandXPS + msOfficeWord + jacob ,仅支持Windows,免费 (完美保持原doc格式,效率最慢)4.2 利用jar进行转换
poi读取doc + Jsoup格式化Html + itext生成pdf (实现最方便,效果最差,跨平台)
jdoctopdf - Dead as of 2016-02-11 Uses Apache POI to read the Word document and iText to write the PDF
Docx4j
docx4j-export-FO ,需要依赖 plutext ,已经停止对外服务。
Spire.Doc for Java ,收费(免费的有限制)
itext-7-pdfoffice ,收费
Aspose.Words ,收费(免费的有限制)4.3 命令行及图形工具
OfficeToPDF
docx2pdf
docs-to-pdf-converter
xdocreport
MS Word
JAVA 生成pdf x-easypdf
- 介绍
只需一行代码搞定pdf的框架,x-easypdf基于pdfbox构建而来,极大降低使用门槛,以组件化的形式进行pdf的构建。简单易用,仅需一行代码,便可完成pdf的操作。
-
特性
2.1 轻量级仅添加pdfbox相关依赖,无其他任何依赖
2.2 简单易用
仅需一行代码,便可完成pdf的操作
2.3 自动换行分页
文本超出单行显示时,即可自动换行;内容超出单页显示时,即可自动分页
2.4 模板填充
提供内置方法,可轻松实现模板填充
2.5 组件化
页面所有内容均采用组件化形式进行构建,使用不同的组件组合方式,即可构造出理想的文档
2.6 扩展灵活
只需实现系统提供的接口,即可完成自定义的组件扩展
-
软件架构
document(文档):PDF文档
page(页面):若干个页面组成PDF文档
watermark(水印):每个页面可设置页面级别的独立水印,也可设置文档级别的全局水印,优先级为:页面级别>文档级别
header(页眉):每个页面可设置页面级别的独立页眉,也可设置文档级别的全局页眉,优先级为:页面级别>文档级别
footer(页脚):每个页面可设置页面级别的独立页脚,也可设置文档级别的全局页脚,优先级为:页面级别>文档级别
component(组件):核心,每个页面由若干个组件构成
text(文本组件):已提供,文本写入组件
line(线条组件):已提供,线条写入组件
image(图片组件):已提供,图片写入组件
table(表格组件):已提供,表格写入组件,cell(单元格)->row(行)->table(表格)
rect(方形组件):已提供,方形写入组件
后续将添加更多其他方便实用的组件。。。
标签:java,创建,iText,文档,pdf,组件,PDF,页面
From: https://www.cnblogs.com/fuqian/p/17069954.html