最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java生成PDF文檔兩個(gè)超實(shí)用的庫( iText和Apache PDFBox)

 更新時(shí)間:2025年02月11日 09:33:01   作者:五行星辰  
這篇文章主要介紹了Java生成PDF文檔兩個(gè)超實(shí)用的庫,分別是用 iText庫以及用Apache PDFBox庫生成PDF,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

在 Java 里實(shí)現(xiàn) PDF 文檔生成那可真是個(gè)挺有意思的事兒,今兒個(gè)就來好好嘮嘮這個(gè)。咱有不少好用的庫可以選擇,下面就給你詳細(xì)講講其中兩個(gè)超實(shí)用的庫,一個(gè)是 iText,另一個(gè)是 Apache PDFBox。

用 iText 庫生成 PDF

思路

  • 先把 iText 庫給引入進(jìn)來,這就好比給咱的 Java 項(xiàng)目裝上了一個(gè)生成 PDF 的“神器”。

  • 創(chuàng)建一個(gè) Document 對象,這個(gè)對象就像是一張白紙,咱要在上面繪制 PDF 的內(nèi)容。

  • 把這張“白紙”打開,同時(shí)設(shè)置好字體啥的,就像準(zhǔn)備好畫筆和顏料。

  • 往 Document 里添加各種內(nèi)容,比如段落、表格這些,就像在白紙上畫畫。

  • 最后把“白紙”合上,PDF 就生成啦。

代碼示例

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class ITextPdfGenerator {
    public static void main(String[] args) {
        // 創(chuàng)建 Document 對象,就像準(zhǔn)備好一張白紙
        Document document = new Document();
        try {
            // 把這張“白紙”和一個(gè)文件輸出流關(guān)聯(lián)起來,指定生成的 PDF 文件路徑
            PdfWriter.getInstance(document, new FileOutputStream("itext_example.pdf"));
            // 打開這張“白紙”,準(zhǔn)備畫畫
            document.open();
            // 在“白紙”上添加一個(gè)段落內(nèi)容
            document.add(new Paragraph("嘿,這是用 iText 生成的 PDF 文檔哦,是不是很神奇!"));
        } catch (DocumentException | FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            // 合上“白紙”,完成 PDF 生成
            if (document.isOpen()) {
                document.close();
            }
        }
    }
}

代碼解釋及使用說明

  • 首先咱創(chuàng)建了一個(gè) Document 對象,它就代表了整個(gè) PDF 文檔,就像一張白紙。

  • 用 PdfWriter.getInstance 方法把 Document 和一個(gè)文件輸出流關(guān)聯(lián)起來,這里指定生成的 PDF 文件叫 itext_example.pdf。

  • 調(diào)用 document.open() 把“白紙”打開,這樣就能往里面添加內(nèi)容啦。

  • 用 document.add(new Paragraph("...")) 往文檔里添加一個(gè)段落,就像在白紙上寫了一句話。

  • 最后在 finally 塊里調(diào)用 document.close() 把“白紙”合上,確保資源都正確釋放。

Maven 依賴

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13.3</version>
</dependency>

用 Apache PDFBox 庫生成 PDF

思路

  • 先把 Apache PDFBox 庫引入進(jìn)來,這也是一個(gè)生成 PDF 的厲害工具。

  • 創(chuàng)建一個(gè) PDDocument 對象,這個(gè)對象就像是一個(gè) PDF 的容器。

  • 創(chuàng)建一個(gè) PDPage 表示頁面,然后把它添加到 PDDocument 里,就像給容器里放了一張紙。

  • 獲取 PDPageContentStream 來繪制內(nèi)容,就像拿起筆在紙上畫畫。

  • 最后關(guān)閉 PDPageContentStream 和 PDDocument,PDF 就生成好啦。

代碼示例

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;

import java.io.IOException;

public class PdfBoxPdfGenerator {
    public static void main(String[] args) {
        // 創(chuàng)建 PDDocument 對象,就像準(zhǔn)備一個(gè) PDF 容器
        PDDocument document = new PDDocument();
        try {
            // 創(chuàng)建一個(gè)頁面,就像準(zhǔn)備一張紙
            PDPage page = new PDPage();
            // 把這張紙放到 PDF 容器里
            document.addPage(page);

            // 獲取頁面內(nèi)容流,就像拿起筆準(zhǔn)備畫畫
            PDPageContentStream contentStream = new PDPageContentStream(document, page);
            // 設(shè)置字體和字號(hào),就像選擇畫筆的粗細(xì)和樣式
            contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
            // 開始新的一行,準(zhǔn)備寫字
            contentStream.beginText();
            // 設(shè)置文本位置,就像確定在紙上的寫字位置
            contentStream.newLineAtOffset(100, 700);
            // 寫入文本,在紙上寫下內(nèi)容
            contentStream.showText("嘿,這是用 Apache PDFBox 生成的 PDF 文檔,很酷吧!");
            // 結(jié)束文本操作,寫完了
            contentStream.endText();
            // 把筆放下,關(guān)閉內(nèi)容流
            contentStream.close();

            // 保存這個(gè) PDF 文檔
            document.save("pdfbox_example.pdf");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 把 PDF 容器關(guān)上,完成操作
            try {
                if (document != null) {
                    document.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

代碼解釋及使用說明

  • 創(chuàng)建 PDDocument 對象,它代表整個(gè) PDF 文檔,就像一個(gè)容器。

  • 創(chuàng)建 PDPage 表示一個(gè)頁面,用 document.addPage(page) 把頁面添加到文檔里,就像把紙放到容器里。

  • 用 PDPageContentStream 來向頁面里繪制內(nèi)容,通過 setFont 方法設(shè)置字體和字號(hào),beginText 開始文本操作,newLineAtOffset 設(shè)置文本位置,showText 寫入文本,endText 結(jié)束文本操作。

  • 調(diào)用 contentStream.close() 關(guān)閉內(nèi)容流,就像把筆放下。

  • 最后調(diào)用 document.save("pdfbox_example.pdf") 保存文檔,在 finally 塊里關(guān)閉 PDDocument,把容器關(guān)上。

Maven 依賴

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.24</version>
</dependency>

嘿,朋友,這下你知道怎么用 Java 生成 PDF 文檔了吧!這兩個(gè)庫都挺好用的,你可以根據(jù)自己的需求選擇哦。趕緊動(dòng)手試試吧!

總結(jié)

到此這篇關(guān)于Java生成PDF文檔的文章就介紹到這了,更多相關(guān)Java生成PDF文檔內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中的LinkedHashSet源碼解讀

    Java中的LinkedHashSet源碼解讀

    這篇文章主要介紹了Java中的LinkedHashSet源碼解讀,LinkedHashSet?是?Java?中的一個(gè)集合類,它是?HashSet?的子類,并實(shí)現(xiàn)了?Set?接口,與?HashSet?不同的是,LinkedHashSet?保留了元素插入的順序,并且具有?HashSet?的快速查找特性,需要的朋友可以參考下
    2023-09-09
  • Java中關(guān)于控制臺(tái)讀取數(shù)字或字符串的方法

    Java中關(guān)于控制臺(tái)讀取數(shù)字或字符串的方法

    下面小編就為大家?guī)硪黄狫ava中關(guān)于控制臺(tái)讀取數(shù)字或字符串的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-10-10
  • Spring Boot基礎(chǔ)學(xué)習(xí)之Mybatis操作中使用Redis做緩存詳解

    Spring Boot基礎(chǔ)學(xué)習(xí)之Mybatis操作中使用Redis做緩存詳解

    這篇文章主要給大家介紹了關(guān)于Spring Boot基礎(chǔ)學(xué)習(xí)之Mybatis操作中使用Redis做緩存的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧
    2018-11-11
  • 調(diào)用Process.waitfor導(dǎo)致的進(jìn)程掛起問題及解決

    調(diào)用Process.waitfor導(dǎo)致的進(jìn)程掛起問題及解決

    這篇文章主要介紹了調(diào)用Process.waitfor導(dǎo)致的進(jìn)程掛起問題及解決,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java使用RSA與AES加密解密的實(shí)例代碼詳解

    java使用RSA與AES加密解密的實(shí)例代碼詳解

    這篇文章主要介紹了java使用RSA與AES加密解密的實(shí)例代碼,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • IDEA集成JProfiler的圖文詳解

    IDEA集成JProfiler的圖文詳解

    本文詳細(xì)介紹了JProfiler的下載、安裝和使用過程,首先需要在官網(wǎng)下載對應(yīng)操作系統(tǒng)的安裝包并進(jìn)行安裝,然后填寫個(gè)人信息進(jìn)行注冊并獲取許可證密鑰,感興趣的朋友一起看看吧
    2024-10-10
  • springboot-啟動(dòng)bean沖突的解決

    springboot-啟動(dòng)bean沖突的解決

    這篇文章主要介紹了springboot-啟動(dòng)bean沖突的解決,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java使用arthas修改日志級別詳解

    Java使用arthas修改日志級別詳解

    在我們線上環(huán)境中,一般不會(huì)開啟debug級別的日志,為了提高性能?info和warning級別的日志也一般不會(huì)打印出來,那么如果遇到線上問題,除了使用arthas定位問題,想通過查詢?nèi)罩緛韺?shí)現(xiàn)問題定位,如何查看logger信息,更新logger?level呢,下面我們來了解arthas修改日志級別
    2022-06-06
  • Java優(yōu)雅的處理金錢問題(BigDecimal)

    Java優(yōu)雅的處理金錢問題(BigDecimal)

    本文主要介紹了Java優(yōu)雅的處理金錢問題(BigDecimal),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Spring Cloud Alibaba 使用 Feign+Sentinel 完成熔斷的示例

    Spring Cloud Alibaba 使用 Feign+Sentinel 完成熔斷的示例

    這篇文章主要介紹了Spring Cloud Alibaba 使用 Feign+Sentinel 完成熔斷的示例,幫助大家更好的理解和學(xué)習(xí)使用Spring Cloud,感興趣的朋友可以了解下
    2021-03-03

最新評論

桃源县| 静乐县| 苍梧县| 澜沧| 辽宁省| 兴宁市| 梓潼县| 陇川县| 观塘区| 英吉沙县| 内黄县| 兰西县| 广灵县| 广西| 麟游县| 渭源县| 长顺县| 栖霞市| 登封市| 图们市| 河北区| 三亚市| 达拉特旗| 黄龙县| 六安市| 峨山| 济南市| 滦平县| 泸水县| 泗洪县| 洛南县| 汾西县| 昌乐县| 瓮安县| 屯留县| 贵州省| 萝北县| 开封县| 米林县| 集安市| 眉山市|