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

在Java中生成PDF文檔超實(shí)用教程

 更新時(shí)間:2026年02月10日 09:21:09   作者:Metaphor692  
Java生成PDF文檔是許多開發(fā)者需要掌握的技術(shù),這篇文章主要介紹了在Java中生成PDF文檔的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

在現(xiàn)代企業(yè)應(yīng)用中,動(dòng)態(tài)生成各類文檔的需求日益增長(zhǎng),無論是自動(dòng)生成報(bào)告、發(fā)票、合同,還是產(chǎn)品說明書和數(shù)據(jù)統(tǒng)計(jì)圖表,PDF 格式因其良好的跨平臺(tái)兼容性和版面固定性,成為了不可或缺的選擇。然而,如何在 Java 后端高效、靈活地實(shí)現(xiàn) PDF 文檔的生成,常常是困擾開發(fā)者的一個(gè)痛點(diǎn)。本文將為您揭示一種高效且功能強(qiáng)大的解決方案——利用 Spire.XLS for Java 庫,幫助您輕松駕馭 Java 中的 PDF 文檔生成,擺脫繁瑣的手動(dòng)排版,實(shí)現(xiàn)自動(dòng)化文檔輸出。

Spire.XLS for Java 簡(jiǎn)介與環(huán)境搭建

Spire.XLS for Java 是一款專業(yè)的 Excel 處理庫,但其功能遠(yuǎn)不止于此。它提供了強(qiáng)大的轉(zhuǎn)換能力,能夠?qū)?Excel 內(nèi)容高質(zhì)量地轉(zhuǎn)換為 PDF 文檔,同時(shí)支持直接創(chuàng)建和操作 PDF 元素。選擇 Spire.XLS for Java 的原因在于其易用性、豐富的功能集以及出色的兼容性,能夠滿足從簡(jiǎn)單文本到復(fù)雜表格、圖片的各種 PDF 生成需求。

要在您的 Java 項(xiàng)目中使用 Spire.XLS for Java,您需要將其作為依賴項(xiàng)添加到您的項(xiàng)目中。以下是 Maven 的配置示例:

Maven 依賴:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf</artifactId>
        <version>12.1.4</version>
    </dependency>
</dependencies>

添加依賴后,確保您的項(xiàng)目能夠成功構(gòu)建。Spire.XLS for Java 通常在試用模式下即可使用其大部分功能,但若用于商業(yè)用途或去除水印,則需要購(gòu)買并配置 License。

在 PDF 中添加文本內(nèi)容

創(chuàng)建 PDF 文檔并添加文本是最基本的操作。Spire.XLS for Java 允許您精確控制文本的字體、大小、顏色和位置。

import com.spire.pdf.*;
import com.spire.pdf.graphics.*;

import java.awt.*;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;

public class CreatePdfDocument {

    public static void main(String[] args) {

        // 創(chuàng)建一個(gè) PdfDocument 對(duì)象
        PdfDocument doc = new PdfDocument();

        // 添加一個(gè)具有指定大小和邊距的頁面
        PdfPageBase page = doc.getPages().add(PdfPageSize.A4, new PdfMargins(35f));

        // 指定頁面內(nèi)容
        String titleText = "產(chǎn)品簡(jiǎn)介";
        String paraText = "Spire.PDF for Java 是一款專門對(duì) PDF 文檔進(jìn)行操作的 Java 類庫。" +
                "該類庫的主要功能在于幫助開發(fā)人員在 Java 應(yīng)用程序(J2SE 和 J2EE)中生成 PDF 文檔和操作現(xiàn)有 PDF 文檔," +
                "并且運(yùn)行環(huán)境無需安裝 Adobe Acrobat。同時(shí)兼容大部分國(guó)產(chǎn)操作系統(tǒng)," +
                "能夠在中標(biāo)麒麟和中科方德等國(guó)產(chǎn)操作系統(tǒng)中正常運(yùn)行。";

        // 創(chuàng)建筆刷和字體
        PdfSolidBrush titleBrush = new PdfSolidBrush(new PdfRGBColor(Color.BLUE));
        PdfSolidBrush paraBrush = new PdfSolidBrush(new PdfRGBColor(Color.BLACK));
        PdfTrueTypeFont titleFont = new PdfTrueTypeFont(new Font("宋體",Font.BOLD,18));
        PdfTrueTypeFont paraFont = new PdfTrueTypeFont(new Font("宋體",Font.PLAIN,12));

        // 設(shè)置文本對(duì)齊方式
        PdfStringFormat format = new PdfStringFormat();
        format.setAlignment(PdfTextAlignment.Center);

        // 在頁面上繪制標(biāo)題
        page.getCanvas().drawString(titleText, titleFont, titleBrush, new Point2D.Float((float)page.getClientSize().getWidth()/2, 40),format);

        // 創(chuàng)建一個(gè) PdfTextWidget 對(duì)象來容納段落內(nèi)容
        PdfTextWidget widget = new PdfTextWidget(paraText, paraFont, paraBrush);

        // 創(chuàng)建一個(gè)矩形,段落內(nèi)容將放置在其中
        Rectangle2D.Float rect = new Rectangle2D.Float(0, 70, (float)page.getClientSize().getWidth(),(float)page.getClientSize().getHeight());

        // 設(shè)置內(nèi)容自動(dòng)分頁
        PdfTextLayout layout = new PdfTextLayout();
        layout.setLayout(PdfLayoutType.Paginate);

        // 在頁面上繪制段落文本
        widget.draw(page, rect, layout);

        // 保存 PDF 文件
        doc.saveToFile("創(chuàng)建PDF.pdf");
        doc.dispose();

    }
}

上述代碼首先創(chuàng)建了一個(gè) PdfDocument 對(duì)象,然后添加了一個(gè)頁面。接著,通過 page.getCanvas().drawString() 方法在指定坐標(biāo)繪制文本。您可以自定義字體 (PdfTrueTypeFont)、顏色 (PdfSolidBrush) 和布局 (PdfStringFormat) 來滿足不同的排版需求。

在 PDF 中創(chuàng)建表格

表格是報(bào)告和數(shù)據(jù)展示中不可或缺的元素。Spire.XLS for Java 提供了靈活的方式來創(chuàng)建和樣式化 PDF 表格。

// 初始化表格
PdfTable table = new PdfTable();

// 定義表格數(shù)據(jù)
        String[] data = {"洲;國(guó)家;人口;世界人口占比;國(guó)旗",
                "亞洲;中國(guó);1,391,190,000;18.2%; ",
                "亞洲;日本;126,490,000;1.66%; ",
                "歐洲;英國(guó);65,648,054;0.86%; ",
                "歐洲;德國(guó);82,665,600;1.08%; ",
                "北美洲; 加拿大; 37,119,000; 0.49%; ",
                "北美洲; 美國(guó); 327,216,000; 4.29%; "
        };
String[][] dataSource = new String[data.length][];
for (int i = 0; i < data.length; i++) {
    dataSource[i] = data[i].split("[;]", -1);
}

// 綁定數(shù)據(jù)并配置表頭
table.setDataSource(dataSource);
table.getStyle().setHeaderSource(PdfHeaderSource.Rows);
table.getStyle().setHeaderRowCount(1);
table.getStyle().setShowHeader(true);

// 在頁面指定位置繪制表格
table.draw(page, new Point2D.Float(0, 30));

此示例展示了如何創(chuàng)建一個(gè) PdfTable,并通過 setDataSource() 方法綁定二維數(shù)組數(shù)據(jù)。通過 table.getStyle() 可以靈活地設(shè)置表格的字體、邊框、背景色等樣式,甚至可以為表頭和交替行設(shè)置不同的樣式,極大地提升了表格的可讀性和美觀度。

在 PDF 中添加圖片

在 PDF 文檔中嵌入圖片可以豐富內(nèi)容,例如添加公司 Logo、產(chǎn)品圖片或圖表。Spire.XLS for Java 支持從文件加載圖片并將其添加到 PDF 頁面。

// 加載圖片文件
PdfImage image = PdfImage.fromFile("image.jpg");

// 縮放圖片(原尺寸的 50%)
float width = image.getWidth() * 0.50f;
float height = image.getHeight() * 0.50f;

// 在頁面指定位置繪制圖片
page.getCanvas().drawImage(image, 100f, 60f, width, height);

在運(yùn)行此代碼前,請(qǐng)確保您的項(xiàng)目根目錄下存在圖片文件。代碼中首先通過 PdfImage.fromFile() 加載圖片對(duì)象。最后,使用 page.getCanvas().drawImage() 方法將圖片繪制到 PDF 頁面上,您可以指定圖片的位置和大小。

總結(jié)與展望

通過本文的詳細(xì)教程,您已經(jīng)掌握了在 Java 中利用 Spire.XLS for Java 庫生成 PDF 文檔的核心技能,包括添加純文本、創(chuàng)建樣式豐富的表格以及嵌入圖片。Spire.XLS for Java 以其直觀的 API 設(shè)計(jì)和強(qiáng)大的功能,極大地簡(jiǎn)化了 PDF 編程的復(fù)雜性,讓開發(fā)者能夠?qū)W⒂跇I(yè)務(wù)邏輯,而非繁瑣的文檔格式細(xì)節(jié)。

當(dāng)然,Spire.XLS for Java 的能力遠(yuǎn)不止這些,它還支持更高級(jí)的 PDF 操作,如添加頁眉頁腳、書簽、超鏈接、表單域,甚至對(duì) PDF 進(jìn)行加密和數(shù)字簽名等。鼓勵(lì)您在實(shí)踐中不斷探索其更多功能,將其應(yīng)用于您的 Java 項(xiàng)目中,實(shí)現(xiàn)更高效、更專業(yè)的文檔自動(dòng)化管理。希望這篇教程能為您的 Java 開發(fā)之旅提供有價(jià)值的參考和幫助!

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

相關(guān)文章

  • 新手初學(xué)Java集合框架

    新手初學(xué)Java集合框架

    這篇文章主要介紹了JAVA集合框架的相關(guān)知識(shí),文中講解非常細(xì)致,幫助大家更好的理解學(xué)習(xí)JAVA框架,感興趣的朋友快來了解下,希望能給你帶來幫助
    2021-07-07
  • SpringBoot實(shí)現(xiàn)阿里云短信發(fā)送的示例代碼

    SpringBoot實(shí)現(xiàn)阿里云短信發(fā)送的示例代碼

    這篇文章主要為大家介紹了如何利用SpringBoot實(shí)現(xiàn)阿里云短信發(fā)送,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定幫助,需要的可以參考一下
    2022-04-04
  • java8 對(duì)象轉(zhuǎn)Map時(shí)重復(fù) key Duplicate key xxxx的解決

    java8 對(duì)象轉(zhuǎn)Map時(shí)重復(fù) key Duplicate key xxxx的解決

    這篇文章主要介紹了java8 對(duì)象轉(zhuǎn)Map時(shí)重復(fù) key Duplicate key xxxx的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • SpringCloud Netflix Ribbon超詳細(xì)講解

    SpringCloud Netflix Ribbon超詳細(xì)講解

    這篇文章主要介紹了SpringCloud筆記HoxtonNetflix之Ribbon負(fù)載均衡,Ribbon是管理HTTP和TCP服務(wù)客戶端的負(fù)載均衡器,Ribbon具有一系列帶有名稱的客戶端(Named Client),對(duì)SpringCloud Ribbon負(fù)載均衡相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-10-10
  • Mybatis_plus基礎(chǔ)教程(總結(jié)篇)

    Mybatis_plus基礎(chǔ)教程(總結(jié)篇)

    這篇文章主要介紹了Mybatis_plus基礎(chǔ)教程(總結(jié)篇),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java中使用正則表達(dá)式獲取網(wǎng)頁中所有圖片的路徑

    Java中使用正則表達(dá)式獲取網(wǎng)頁中所有圖片的路徑

    這篇文章主要介紹了Java中使用正則表達(dá)式獲取網(wǎng)頁中所有圖片的路徑,本文直接給出實(shí)例代碼,需要的朋友可以參考下
    2015-06-06
  • 深入理解Maven環(huán)境搭建和介紹

    深入理解Maven環(huán)境搭建和介紹

    這篇文章主要介紹了深入理解Maven環(huán)境搭建和介紹,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • java.nio.file.NoSuchFileException異常問題及解決過程

    java.nio.file.NoSuchFileException異常問題及解決過程

    SpringBoot數(shù)據(jù)導(dǎo)入接口異常因Linux臨時(shí)目錄被清理導(dǎo)致路徑缺失,需手動(dòng)配置上傳路徑為/home/tmp并確保目錄存在及權(quán)限,避免Files.createFile()找不到父目錄
    2025-08-08
  • springboot相關(guān)面試題匯總詳解

    springboot相關(guān)面試題匯總詳解

    這篇文章主要介紹了springboot相關(guān)面試題匯總詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • SpringMVC Restful api接口實(shí)現(xiàn)的代碼

    SpringMVC Restful api接口實(shí)現(xiàn)的代碼

    本篇文章主要介紹了SpringMVC Restful api接口實(shí)現(xiàn)的代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09

最新評(píng)論

海晏县| 五河县| 河西区| 井研县| 司法| 化德县| 通化市| 河曲县| 若羌县| 佛坪县| 仁布县| 若尔盖县| 雷波县| 峨眉山市| 山东省| 民县| 宜春市| 大丰市| 绥棱县| 进贤县| 玉门市| 平顶山市| 长丰县| 秦皇岛市| 景东| 加查县| 平泉县| 尉氏县| 尼玛县| 宜兴市| 镇平县| 高清| 牡丹江市| 桃园县| 新绛县| 铁岭县| 衡阳市| 甘孜县| 凉山| 四平市| 汶上县|