Skip to content

Latest commit

 

History

History
250 lines (201 loc) · 27.5 KB

README.md

File metadata and controls

250 lines (201 loc) · 27.5 KB

一个用搭积木的方式构建pdf的框架(基于pdfbox/fop)

更新说明

master分支将作为稳定版本发布,develop分支将会不定期进行更新,欢迎大家提供宝贵意见,QQ交流群:15018726


项目主页

https://x-easypdf.cn


项目概述

x-easypdf是一个基于pdfbox/fop二次封装的框架,目前拥有两大模块:【pdfbox模块】与【fop模块】。【pdfbox模块】主打pdf编辑功能,以组件化的形式进行pdf的构建;【fop模块】主打pdf导出功能,采用数据源的方式对xsl-fo模板进行转换,同时提供java对象的方式构建dom模板文档,即使完全不懂xsl-fo的语法,也能轻松上手写出对应的模板。两个模块均可单独使用,也可以结合使用,帮助开发者快速生成pdf文档。


当前版本

v3.0.0


使用环境

jdk 1.8+


项目特性

  • pdfbox模块
    • 简单智能

    自动换行与分页

    • 表单填写

    内置文档表单填写器(可填写表单中的文本域)

    • 图像转换

    内置文档图像器(可将文档整个转换为图片,或将文档中的某几页转换为图片)

    • 文档提取

    内置文档提取器(可提取文档中的文本与图片)

    • 文档替换

    内置文档替换器(可替换文档中的图片)

    • 文档分析

    内置文档分析器(可分析文档中的文本与图片信息,包含坐标、内容、字体大小等)

    • 文档拆分

    内置文档拆分器(可将文档按照页码拆分成一个或多个文档)

    • 数字签名

    内置文档签名器(可对文档进行数字签名)

    • 内置字体

    内置细体 | 正常 | 粗体三种开源中文字体(华为鸿蒙字体)

    • 组件丰富

    内置水印、页眉、页脚、文本、图片、表格、矩形、圆形、线条、布局、条形码(一维码/二维码)等组件

  • fop模块
    • 基于模板生成
    • 内置多种数据源(xml 数据源、thymeleaf 数据源、freemarker 数据源、jte 数据源、document 数据源)
    • 提供面向对象的方式生成模板(document 数据源)
    • 灵活的扩展性

软件架构

软件架构


代码扫描

  • SonarQube

SonarQube

  • Gitee Scan

Gitee Scan


maven坐标

  • 全功能模块(pdfbox + fop)
<dependency>
    <groupId>org.dromara.x-easypdf</groupId>
    <artifactId>x-easypdf</artifactId>
    <version>3.0.0</version>
</dependency>
  • pdfbox模块
<dependency>
    <groupId>org.dromara.x-easypdf</groupId>
    <artifactId>x-easypdf-pdfbox</artifactId>
    <version>3.0.0</version>
</dependency>
  • fop模块
<dependency>
    <groupId>org.dromara.x-easypdf</groupId>
    <artifactId>x-easypdf-fop</artifactId>
    <version>3.0.0</version>
</dependency>

安装教程

mvn clean install

快速体验

  • pdfbox模块
// 创建文档
Document document = PdfHandler.getDocumentHandler().create();
// 设置使用字体
document.setFontName("微软雅黑");
// 创建页面
Page page = document.createPage();
// 创建文本域
Textarea textarea = new Textarea(page);
// 设置文本
textarea.setText("Hello World!");
// 渲染文本
textarea.render();
// 添加页面
document.appendPage(page);
// 保存文档
document.save("E:\\PDF\\pdfbox\\document\\hello-world.pdf");
// 关闭文档
document.close();
  • fop模块(使用document数据源)
TemplateHandler.Document.build().addPage(TemplateHandler.Page.build().addBodyComponent(TemplateHandler.Text.build().setText("hello world"))).transform("E:\\PDF\\fop\\document\\hello-world.pdf");

更多教程,请查看文档


Dromara 成员项目

为往圣继绝学,一个人或许能走的更快,但一群人会走的更远。