首页 > 编程语言 >java 创建 编辑 PDF

java 创建 编辑 PDF

时间:2023-01-28 11:46:18浏览次数:60  
标签:java 创建 iText 文档 pdf 组件 PDF 页面

JAVA操作PDF开源项目

  1. 操作PDF的JAR主要分成两类,分别是iText系列和Apache PDFBox系列
    1.1 iText PDF :iText是著名的开放项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为 PDF 文件

    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包。

  2. 操作PDF相关工具
    2.1 Jasper Report :是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成 PDF

    JasperReport是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成 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文档。

  3. 生成可替换pdf
    3.1 freemarker

    FreeMarker是一款模板引擎:即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,
    而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。

  4. 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

  1. 介绍

只需一行代码搞定pdf的框架,x-easypdf基于pdfbox构建而来,极大降低使用门槛,以组件化的形式进行pdf的构建。简单易用,仅需一行代码,便可完成pdf的操作。

  1. 特性
    2.1 轻量级

    仅添加pdfbox相关依赖,无其他任何依赖

    2.2 简单易用

    仅需一行代码,便可完成pdf的操作

    2.3 自动换行分页

    文本超出单行显示时,即可自动换行;内容超出单页显示时,即可自动分页

    2.4 模板填充

    提供内置方法,可轻松实现模板填充

    2.5 组件化

    页面所有内容均采用组件化形式进行构建,使用不同的组件组合方式,即可构造出理想的文档

    2.6 扩展灵活

    只需实现系统提供的接口,即可完成自定义的组件扩展

  2. 软件架构

document(文档):PDF文档

page(页面):若干个页面组成PDF文档

watermark(水印):每个页面可设置页面级别的独立水印,也可设置文档级别的全局水印,优先级为:页面级别>文档级别

header(页眉):每个页面可设置页面级别的独立页眉,也可设置文档级别的全局页眉,优先级为:页面级别>文档级别

footer(页脚):每个页面可设置页面级别的独立页脚,也可设置文档级别的全局页脚,优先级为:页面级别>文档级别

component(组件):核心,每个页面由若干个组件构成

text(文本组件):已提供,文本写入组件
line(线条组件):已提供,线条写入组件
image(图片组件):已提供,图片写入组件
table(表格组件):已提供,表格写入组件,cell(单元格)->row(行)->table(表格)
rect(方形组件):已提供,方形写入组件
后续将添加更多其他方便实用的组件。。。
  1. 文档

标签:java,创建,iText,文档,pdf,组件,PDF,页面
From: https://www.cnblogs.com/fuqian/p/17069954.html

相关文章

  • Java:注解
    注解还记得刚开始学注解时,很天真。傻傻以为创建一个注解类,加到类、方法、属性上就能有某种功能。现在对注解的理解很简单:标记,可以被程序读取到的标记!(注释是程序不会去执......
  • 数据可视化大屏高德地图javascript webAPI开发的智慧治安物联网管理系统实战解析(web
    文章目录​​高德地图开发系列文章目录​​​​前言​​​​一、项目说明​​​​二、核心代码开发​​​​1.引入库​​​​2.构建DOM容器​​​​3.高德地图开发​​​​(1......
  • 在java中实现两层关联的枚举
    在实际开发中,有各种奇葩的需求,我就遇到一次,在调度任务建依赖的时候,需要选择依赖的周期和周期的值比如下面这样,如果你依赖天任务,那么还需要选择今天、昨天还是前七天?周......
  • Java Web项目1:水果管理系统
    JavaWeb项目1:水果管理系统核心参考资料:JavaWeb教程笔记尚硅谷JavaWeb教程项目架构体系单一架构技术体系视图(V):用户的操作界面+数据的动态显示前端技术:HTML/CSS/J......
  • CAD中如何创建过角点十字中心线?
    作为一名机械设计师想必一定知道CAD中心线怎么画,可是当需要创建过角点的十字中心线时,该如何操作呢?本文就和小编一起来了解一下用浩辰CAD机械软件来创建过角点十字中心线的......
  • 读Java8函数式编程笔记03_高级集合类和收集器
    1. 方法引用1.1. 一种引用方法的轻量级语法1.1.1. 提供了一种简短的语法1.1.2. 标准语法为Classname::methodName1.2. 凡是使用Lambda表达式的地方,就可以使用1.......
  • java多线程基础小白指南--关键字识别(start,run,sleep,wait,join,yield)
    在学习java多线程基础上,会遇到几个关键字,理解并识别它们是掌握多线程的必备知识,下面,我将通过源码或者程序演示给出我对这几个关键字的理解,如果有不同意见,欢迎在评论区或者......
  • java安全-RMI
    Java安全-RMI1、RMI原理浅析RMI(RemoteMethodInvocation)远程方法调用,是允许运行在一个JVM中的对象调用另一个JVM中的对象方法。两台虚拟机可以是同一台宿主机的不......
  • JavaScript学习笔记—正则表达式
    用来定义一个规则通过这个规则计算机可以检查一个字符串是否符合规则或者将字符串中符合规则的内容提取出来也是JS中的一个对象,所以要使用正则表达式,需要先创建正则表达......
  • java学习记录
    makrdown学习标题二级标题字体粗体斜体斜体加粗划线引用引用分割号图片可以用复制的东西超链接点击列表............