x-easypdf 初始与简单使用

一、概述

一个 java 语言简化处理 pdf 的框架

项目主页

https://x-easypdf.cn

项目概述

x-easypdf是一个java语言简化处理pdf的框架,包含fop模块与pdfbox模块,fop模块以创建功能为主,基于xsl-fo模板生成pdf文档,以数据源的方式进行模板渲染;pdfbox模块以编辑功能为主,对标准的pdfbox进行扩展,添加了成吨的功能。

项目特性

fop模块

以创建功能为主,基于 xsl-fo 模板生成 pdf 文档,以数据源的方式进行模板渲染。

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

以编辑功能为主,对标准的 pdfbox 进行扩展,添加了成吨的功能。

  • 超出页面宽度自动换行,超出页面高度自动分页
  • 内置华为鸿蒙字体,天然支持中文文本
  • 内置页眉页脚,简单快捷
  • 内置多个组件,满足不同的需求
  • 内置多种扩展器,方便解析、提取与处理文档内容
  • 支持自定义组件与扩展

springboot简单集成测试

复制代码
        <dependency>
            <groupId>org.dromara.x-easypdf</groupId>
            <artifactId>x-easypdf</artifactId>
            <version>3.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.dromara.x-easypdf</groupId>
            <artifactId>x-easypdf-pdfbox</artifactId>
            <version>3.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.dromara.x-easypdf</groupId>
            <artifactId>x-easypdf-fop</artifactId>
            <version>3.2.1</version>
        </dependency>     

测试代码:

复制代码
  @Test
    void contextLoads() {
        String content = "\t先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。\n" +
                "\n" +
                "宫中府中,俱为一体,陟罚臧否,不宜异同。若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理,不宜偏私,使内外异法也。\n" +
                "\n" +
                "侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下。愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。\n" +
                "\n" +
                "将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰能,是以众议举宠为督。愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。\n" +
                "\n" +
                "亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之信之,则汉室之隆,可计日而待也。\n" +
                "\n" +
                "臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。\n" +
                "\n" +
                "先帝知臣谨慎,故临崩寄臣以大事也。受命以来,夙夜忧叹,恐托付不效,以伤先帝之明,故五月渡泸,深入不毛。今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。此臣所以报先帝而忠陛下之职分也。至于斟酌损益,进尽忠言,则攸之、祎、允之任也。\n" +
                "\n" +
                "愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏,臣不胜受恩感激。\n" +
                "\n" +
                "今当远离,临表涕零,不知所言。";

        // (1)PDFBox方式创建文件
        Document document = PdfHandler.getDocumentHandler().create();
        // 设置使用字体
        document.setFontName("仿宋");
        // 创建页面
        Page page = new Page(document);
        // 创建文本域
        Textarea textarea = new Textarea(page);
        // 设置文本
        textarea.setText(content);
        // 设置字体颜色
        textarea.setFontColor(Color.BLUE);
        // 渲染文本
        textarea.render();
        // 添加页面
        document.appendPage(page);
        // 保存文档
        document.save("E:\\PDF\\出师表(1).pdf");
        // 关闭文档
        document.close();

        //(2)模板方式创建文件
        TemplateHandler.Document.build().addPage(TemplateHandler.Page.build().
                        addBodyComponent(TemplateHandler.Text.build().
                                setFontFamily("宋体").
                                setText(content))).
                setAuthor("诸葛亮").
                setSubject("出师表").
                setTitle("出师表").
                transform("E:\\PDF\\出师表(2).pdf");
    }

文档效果:

复制代码
(1)PDFBox方式创建文件

(2)模板方式创建文件

源地址:x-easypdf:一个 java 语言简化处理 pdf 的框架 - GitCode

相关推荐
鱼鳞_7 分钟前
苍穹外卖-Day01(开发环境搭建)
java·spring boot·spring·maven
TAN-90°-26 分钟前
Java 6——成员变量初始值 object equals和== toString instanceof 参数传递问题
java·开发语言
中新传媒28 分钟前
德宸堂心理双师同诊
java·前端·数据库
想唱rap35 分钟前
NAT、内网穿透、代理服务
java·linux·网络·网络协议·udp·智能路由器
环流_42 分钟前
nacos环境隔离
java·服务器·前端
芋只因43 分钟前
天机学堂学习笔记
java·笔记·学习
摇滚侠1 小时前
Spring 面试题 真正的 offer 偏方 Java 基础 Java 高级
java·后端·spring
格鸰爱童话1 小时前
springboot3.2使用neo4j
springboot·neo4j
凯瑟琳.奥古斯特1 小时前
IP组播跨子网传输核心技术解析
java·开发语言·网络·网络协议·职场和发展
若水不如远方1 小时前
Java JSON 序列化原理与实战问题总结
java