【Excel PDF 系列】iText 庫直接實現表格 PDF

你知道的越多,你不知道的越多
點贊再看,養成習慣
如果您有疑問或者見解,歡迎指教:
企鵝:869192208

文章目錄

        • 前言
        • 生成表格 PDF 效果
        • 引入 pom 配置
        • 代碼實現
            • 定義 CreateExcelToPdfModel 對象
            • 主方法

前言

最近遇到生成 Excel 并轉 PDF 的需求,磕磕碰碰總結三種方式,分別是 POI + iText 庫,EasyExcel + iText 庫和直接生成 PDF 表格三種方式。

本文基于 iText 庫實現,直接生成表格的 PDF 文件。

生成表格 PDF 效果

直接生成PDF

引入 pom 配置
<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version>
</dependency>
代碼實現
定義 CreateExcelToPdfModel 對象
import lombok.Data;
import java.util.List;/*** <h2>生成excel表格型的pdf入參</h2>* @author chendw* @date 2024-02-25 10:12:51**/
@Data
public class CreateExcelToPdfModel {//表頭數據private List<List<String>> head;//表的內容數據private List<List<String>> dataList;//PDF表頭標題private String sheetName;}
主方法
import lombok.extern.slf4j.Slf4j;@Slf4j
public class TablePdfUtil {public static void createTablePdf(CreateExcelToPdfModel createExcelToPdfModel, String pdfFilePath) {try (FileOutputStream fos = new FileOutputStream(pdfFilePath)) {List<List<String>> headList = createExcelToPdfModel.getHead();List<List<String>> dataList = createExcelToPdfModel.getDataList();// 創建PDF文檔對象Document document = new Document(PageSize.A2, 50, 50, 50, 50);// 創建PDF輸出流PdfWriter writer = PdfWriter.getInstance(document, fos);// 打開PDF文檔document.open();// 創建PDF表格對象PdfPTable table = new PdfPTable(headList.size());table.setHeaderRows(1);// 設置表格寬度table.setWidthPercentage(100);// 設置表格標題String sheetName = createExcelToPdfModel.getSheetName();Paragraph title = new Paragraph(sheetName, new Font(BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED), 16, Font.BOLD));title.setAlignment(Element.ALIGN_CENTER);document.add(title);// 添加表格標題for (List<String> head : headList) {String value = head.get(0);PdfPCell pdfCell = new PdfPCell(new Paragraph(value, new Font(BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED), 12)));pdfCell.setBorderWidth(1f);pdfCell.setBorderColor(BaseColor.BLACK);pdfCell.setPadding(5f);pdfCell.setBackgroundColor(BaseColor.LIGHT_GRAY);table.addCell(pdfCell);}// 添加表格內容for (List<String> data : dataList) {for (String s : data){PdfPCell pdfCell = new PdfPCell(new Paragraph(s, new Font(BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED), 12)));pdfCell.setBorderWidth(1f);pdfCell.setBorderColor(BaseColor.BLACK);pdfCell.setPadding(5f);table.addCell(pdfCell);}}// 添加表格到PDF文檔table.setSpacingBefore(20f);table.setSpacingAfter(20f);table.setKeepTogether(true);document.add(table);// 關閉PDF文檔document.close();} catch (Exception e) {log.error("生成表格pdf失敗:{}", e.getMessage(), e);}}
}

至此,就基于 iText 庫直接實現了表格 PDF 的邏輯。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716182.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716182.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716182.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java必須掌握的繼承中的構造方法和this super關鍵字(含面試大廠題和源碼)

在Java中&#xff0c;繼承中的構造方法和關鍵字this、super是面試中經常涉及的重要話題。下面是一個潛在的大廠面試題&#xff0c;以及可能的解答和討論。 面試題&#xff1a; 請解釋Java中繼承中構造方法的作用以及關鍵字this和super的使用場景。請提供示例代碼加以說明。 …

EchoServer回顯服務器簡單測試

目錄 工具介紹 工具使用 測試結果 工具介紹 github的一個開源項目,是一個測壓工具 EZLippi/WebBench: Webbench是Radim Kolar在1997年寫的一個在linux下使用的非常簡單的網站壓測工具。它使用fork()模擬多個客戶端同時訪問我們設定的URL&#xff0c;測試網站在壓力下工作的…

ARMv8-A電源管理Power management

目錄 一、ARMv8-A電源管理概述 二、idle管理 2.1 電源和時鐘 Standby-待機 Retention-保持 Powerdown-關機 Dormant mode-休眠模式 Hotplug-熱插拔 三、動態電壓和頻率調節 四、匯編語言power指令 五、電源狀態協調接口 一、ARMv8-A電源管理概述 許多ARM系統是移動…

二維碼門樓牌管理系統:城市數字化管理的新里程碑

文章目錄 前言一、二維碼門樓牌管理系統的構成二、二維碼門樓牌管理系統的功能三、二維碼門樓牌管理系統的應用四、二維碼門樓牌管理系統的未來發展 前言 隨著城市管理的數字化、智能化水平不斷提升&#xff0c;二維碼門樓牌管理系統作為一種創新的城市管理方法&#xff0c;正…

JavaScript 學習總結(17)—— 前端開發規范之命名規范、html 規范、css 規范、js 規范

前言 一個好的程序員肯定是要能書寫可維護的代碼,而不是一次性的代碼,怎么能讓團隊當中其他人甚至一段時間時候你再看你某個時候寫的代碼也能看懂呢,這就需要規范你的代碼了。我是有一點強迫癥的人,上周我們后端給我了一個CanUsename的接口(該接口的目的是判斷輸入的目的…

Ubuntu20.04: UE4.27 中 Source Code 的編輯器下拉框沒有 Rider選項

問題描述 最近想用 Rider 作為 UE4 開發的 IDE&#xff0c;但安裝好 Rider 后&#xff0c;發現編輯器下拉框中沒有 Rider 的選項&#xff0c;我檢查了 UE4 的插件&#xff0c;發現 Rider Integration 插件已經安裝且啟用的。 環境&#xff1a;Ubuntu 20.04 UE4.27 Rider2023…

應急加電電源車-在航空航天、武器等多領域的應用

應急加電電源車是一種專門設計用于在緊急情況下為其他設備提供電力支持的車輛。它通常由電池或燃料電池驅動&#xff0c;可以在沒有外部電源的情況下為其他設備提供持續的電力供應。這種車輛在災難救援、野外作業、軍事行動等領域具有廣泛的應用。 應急加電電源車通常具有以下…

WordPress建站入門教程:如何在本地電腦搭建WordPress網站?

前面跟大家分享了『WordPress建站入門教程&#xff1a;如何安裝本地WordPress網站運行環境&#xff1f;』&#xff0c;接下來boke112百科就繼續跟大家分享本地電腦如何搭建WordPress網站。 小皮面板&#xff08;phpstudy&#xff09;的“軟件管理 – 網站程序”雖然可以一鍵部…

Springboot+vue的高校教師教研信息填報系統(有報告)。Javaee項目,springboot vue前后端分離項目。

演示視頻&#xff1a; Springbootvue的高校教師教研信息填報系統&#xff08;有報告&#xff09;。Javaee項目&#xff0c;springboot vue前后端分離項目。 項目介紹&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&am…

數據審計 -本福德定律 Benford‘s law (sample database classicmodels _No.6)

數據審計 -本福德定律 Benford’s law 準備工作&#xff0c;可以去下載 classicmodels 數據庫資源如下 [ 點擊&#xff1a;classicmodels] 也可以去我的博客資源下載 文章目錄 數據審計 -本福德定律 Benfords law 前言一、什么是 本福德定律&#xff1f;二、數學公式三、應用…

最新會聲會影2024旗艦版系統配置要求

大家好呀&#xff01;小編今天給大家帶來了一個超級實用的信息&#xff0c;關于會聲會影2024旗艦版的系統配置要求&#xff01; 會聲會影2023-安裝包&#xff1a; https://souurl.cn/gtyDFc 會聲會影2023-安裝包&#xff1a; https://souurl.cn/ZQ6QWp 會聲會影2022-安裝包&a…

Java零基礎-反序列化和序列化

哈嘍&#xff0c;各位小伙伴們&#xff0c;你們好呀&#xff0c;我是喵手。 今天我要給大家分享一些自己日常學習到的一些知識點&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相學習&#xff0c;一個人雖可以走的更快&#xff0c;但一群人可以走的更遠。 我是一名后…

回歸預測 | Matlab實現CPO-BiTCN-BiGRU冠豪豬算法優化雙向時間卷積門控循環單元多變量回歸預測

回歸預測 | Matlab實現CPO-BiTCN-BiGRU冠豪豬算法優化雙向時間卷積門控循環單元多變量回歸預測 目錄 回歸預測 | Matlab實現CPO-BiTCN-BiGRU冠豪豬算法優化雙向時間卷積門控循環單元多變量回歸預測效果一覽基本介紹程序設計參考資料 效果一覽 基本介紹 1.Matlab實現CPO-BiTCN-B…

mc生存插火把

題目描述 話說有一天 linyorson 在“我的世界”開了一個 nn 的方陣&#xff0c;現在他有 m 個火把和 k 個螢石&#xff0c;分別放在 (x1,y1)~(xm,ym) 和 (o1,p1)~(ok,pk)的位置&#xff0c;沒有光并且沒放東西的地方會生成怪物。請問在這個方陣中有幾個點會生成怪物&#xf…

Vue開發實例(六)實現左側菜單導航

左側菜單導航 一、一級菜單二、二級菜單三、三級菜單1、加入相關事件 四、菜單點擊跳轉1. 創建新頁面2. 配置路由3. 菜單中加入路由配置4、處理默認的Main窗口為空的情況 五、動態左側菜單導航1、動態實現一級菜單2、動態實現二級菜單 一、一級菜單 在之前的Aside.vue中去實現…

SRIO--IP講解及環回測試

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言一、IP例化文件二、SRIO環回工程搭建三、板級驗證3.1 板級驗證環節3.2 系統所需硬件3.3 ILA波形前言 本章將為大家介紹 “Serial RapidIO Gen2 ”IP 的使用以及配置方法。“Serial RapidIO Ge…

JavaScript入門學(Web APIs)

1.變量聲明 2 DOM介紹 2.1 什么是DOM 2.2 DOM樹 2.3 DOM對象&#xff08;重要&#xff09; 3.DOM&#xff08;文檔對象模型&#xff09;-獲取元素 3.1 獲取匹配的第一個元素 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&…

Canvs的js庫:Fabric.js簡單強大,用于繪制各種圖形

Fabric.js是一個用于創建交互式的HTML5 Canvas應用程序的JavaScript庫。它提供了一個簡單而強大的API&#xff0c;用于在Web瀏覽器中繪制和操作圖形對象。Fabric.js可以用于創建各種圖形應用程序&#xff0c;例如繪圖編輯器、圖像編輯器、流程圖、地圖和數據可視化等。 官網文…

校企合作項目總結

校企合作總結 前言項目框架開發待辦水平越權總結 前言 寒假里小組給了校企合作的項目&#xff0c;分配給我的工作量總共也就兩三套crud&#xff0c;雖然工作很少&#xff0c;但還是從里面學到了很多東西&#xff0c;收獲了大量的實習經驗&#xff0c;在這里總結記錄一下。 項…

FreeRTOS學習筆記——FreeRTOS中斷管理

精華總結&#xff1a; 中斷優先級0為最高&#xff0c;任務優先級0為最低 中斷優先級分組中為方便rtos管理4bit全部設置成搶占優先級 32單片機的中斷管理是由3個寄存器完成&#xff08;名字忽略&#xff0c;具體功能忽略&#xff09;&#xff0c;三個寄存器都是32bit&#xff0c…