一、概述
一個 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