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

SpringBoot集成iTextPDF的實例

 更新時間:2024年09月20日 10:43:07   作者:kicinio  
SpringBoot集成iTextPDF時,創(chuàng)建PDF文檔涉及Document、PdfPTable和PdfPCell對象,設(shè)置文檔大小和頁邊距,使用Paragraph設(shè)置段落樣式,并通過Table和Cell控制表格樣式和對齊,還可加入圖片美化文檔,這些步驟對于生成具有中文內(nèi)容的PDF文件至關(guān)重要

SpringBoot集成iTextPDF

依賴

        <dependency>
            <groupId>com.lowagie</groupId>
            <artifactId>itext</artifactId>
            <version>4.2.2</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>

注意:不加下面這個依賴無法設(shè)置中文

使用步驟

  1. 先創(chuàng)建Document對象,該對象是PDF文檔,可以進行一些屬性設(shè)置
  2. PdfPTable是表格對象,用于表格對象的創(chuàng)建、管理及使用
  3. PdfPCell是具體的表格子項了,里面就是我們要操作寫入的對象
  4. PdfPCell對象加入到PdfPTable對象中,PdfPTable對象再加入到Document對象中,便完成了文檔的創(chuàng)建

基本屬性

文檔大?。?/strong>

由Document對象的多個重載構(gòu)造器決定。

Document(); // 默認頁面大小是A4
Document(PageSize.A4); // 指定頁面大小為A4
Document(PageSize.A4,50,50,30,20); // 指定頁面大小為A4,且自定義頁邊距(marginLeft、marginRight、marginTop、marginBottom)

段落的設(shè)置:

由Paragraph的對象屬性決定。

Paragraph paragraph = new Paragraph(name,headfont);//設(shè)置字體樣式
paragraph.setAlignment(1);//設(shè)置文字居中 0靠左 1,居中 2,靠右
paragraph.setIndentationLeft(12);// 左縮進
paragraph.setIndentationRight(12);// 右縮進
paragraph.setFirstLineIndent(24);// 首行縮進
paragraph.setLeading(20f); //行間距
paragraph.setSpacingBefore(5f); //設(shè)置段落上空白
paragraph.setSpacingAfter(10f); //設(shè)置段落下空白

表格:

由Table的對象屬性決定。

table.setAlignment(Element.ALIGN_CENTER);//居中
table.setAutoFillEmptyCells(true);//自動填滿
table.setBorderWidth((float)0.1);//表格邊框線條寬度
table.setPadding(1);//邊距:單元格的邊線與單元格內(nèi)容的邊距
table.setSpacing(0);//間距:單元格與單元格之間的距離

cell:

由Cell的對象屬性決定。

cell.setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中
cell.setVerticalAlignment(Element.ALIGN_MIDDLE); //垂直居中

代碼

    @RequestMapping(value = "ef/pdf")
    public void pdfController() throws IOException, DocumentException {
        HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
        response.setHeader("content-Type", "application/pdf");
        // 下載文件的默認名稱
        response.setHeader("Content-Disposition", "attachment;filename=test.pdf");

        Document document = new Document();
        try {
            PdfWriter.getInstance(document, response.getOutputStream());
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        document.open();
        document.setPageCount(2);
        document.addTitle("Personal Grade Browser");// 標題
        document.addAuthor("Jack.Edward");// 作者
        document.addSubject("Personal Grade of Jack.Edward");// 主題
        document.addKeywords("Simulator");// 關(guān)鍵字
        document.addCreator("Kicinio");// 創(chuàng)建者

        Image image =Image.getInstance("/xp.png");

        List<String> titleList = new ArrayList<>();
        titleList.add("Literature");
        titleList.add("Math");
        titleList.add("English");

        for(int i = 0; i < 10; i++){
            PdfPTable tableContent = new PdfPTable(titleList.size());
            if(i == 0){
                PdfPTable tableTitle = new PdfPTable(titleList.size());
                PdfPCell cellOne = new PdfPCell();
                cellOne.setPhrase(new Paragraph(titleList.get(0)));
                cellOne.setBackgroundColor(BaseColor.LIGHT_GRAY);
                cellOne.setHorizontalAlignment(Element.ALIGN_CENTER);
                tableTitle.addCell(cellOne);

                PdfPCell cellTwo = new PdfPCell();
                cellTwo.setPhrase(new Paragraph(titleList.get(1)));
                cellTwo.setBackgroundColor(BaseColor.LIGHT_GRAY);
                cellTwo.setHorizontalAlignment(Element.ALIGN_CENTER);
                tableTitle.addCell(cellTwo);

                PdfPCell cellThree = new PdfPCell();
                cellThree.setPhrase(new Paragraph(titleList.get(2)));
                cellThree.setBackgroundColor(BaseColor.LIGHT_GRAY);
                cellTwo.setHorizontalAlignment(Element.ALIGN_CENTER);
                tableTitle.addCell(cellThree);

                document.add(tableTitle);
            }
            Random randomGrade = new Random();
            PdfPCell cell = new PdfPCell();
            cell = new PdfPCell();
            cell.setPhrase(new Paragraph(String.valueOf(randomGrade.nextInt(100))));
            tableContent.addCell(cell);
            document.add(tableContent);

            cell = new PdfPCell();
            cell.setPhrase(new Paragraph(String.valueOf(randomGrade.nextInt(100))));
            tableContent.addCell(cell);
            cell.setBorderWidth(20);
            document.add(tableContent);

            cell = new PdfPCell();
            cell.setPhrase(new Paragraph(String.valueOf(randomGrade.nextInt(100))));
    //        cell.setImage(image);
            tableContent.addCell(cell);
            document.add(tableContent);

        }
        document.close();
    }

效果

  • 加上圖片之后:

有興趣的讀者可自行美化

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Skywalking改成適配阿里云等帶Http?Basic的Elasticsearch服務(wù)

    Skywalking改成適配阿里云等帶Http?Basic的Elasticsearch服務(wù)

    這篇文章主要介紹了改造Skywalking支持阿里云等帶Http?Basic的Elasticsearch服務(wù)
    2022-02-02
  • RabbitMq消息防丟失功能實現(xiàn)方式講解

    RabbitMq消息防丟失功能實現(xiàn)方式講解

    這篇文章主要介紹了RabbitMq消息防丟失功能實現(xiàn),RabbitMQ中,消息丟失可以簡單的分為兩種:客戶端丟失和服務(wù)端丟失。針對這兩種消息丟失,RabbitMQ都給出了相應(yīng)的解決方案
    2023-01-01
  • IntelliJ IDEA打開多個Maven的module且相互調(diào)用代碼的方法

    IntelliJ IDEA打開多個Maven的module且相互調(diào)用代碼的方法

    這篇文章主要介紹了IntelliJ IDEA打開多個Maven的module且相互調(diào)用代碼的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • Java中常用時間的一些相關(guān)方法

    Java中常用時間的一些相關(guān)方法

    日期的使用多種多樣,但萬變不離其宗,下面這篇文章主要給大家介紹了關(guān)于Java中常用時間的一些相關(guān)方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-10-10
  • javaweb中靜態(tài)文件的常用處理方法匯總

    javaweb中靜態(tài)文件的常用處理方法匯總

    這篇文章主要介紹了javaweb中靜態(tài)文件的常用處理方法匯總,非常實用的技巧,需要的朋友可以參考下
    2014-08-08
  • 使用svn管理Maven項目的方法步驟

    使用svn管理Maven項目的方法步驟

    這篇文章主要介紹了使用svn管理Maven項目的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • javaweb項目入門實戰(zhàn)詳細指南

    javaweb項目入門實戰(zhàn)詳細指南

    Java?Web開發(fā)是指使用Java技術(shù)來創(chuàng)建動態(tài)網(wǎng)站或Web應(yīng)用程序,Java?Web開發(fā)主要使用Servlet、JSP(JavaServer?Pages)、JavaBeans等技術(shù)來實現(xiàn)動態(tài)頁面和處理業(yè)務(wù)邏輯,這篇文章主要介紹了javaweb項目入門的相關(guān)資料,需要的朋友可以參考下
    2025-12-12
  • Java switch支持的數(shù)據(jù)類型詳解

    Java switch支持的數(shù)據(jù)類型詳解

    這篇文章主要介紹了Java switch支持的數(shù)據(jù)類型詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • MyBatis中的多字段IN查詢方式

    MyBatis中的多字段IN查詢方式

    本文介紹了在MyBatis中進行多字段IN查詢的目標SQL、Mapper接口定義及XML配置方法,并簡要總結(jié)了相關(guān)個人經(jīng)驗,供讀者參考和學習
    2025-10-10
  • 淺談Java數(shù)組的一些使用方法及堆棧存儲

    淺談Java數(shù)組的一些使用方法及堆棧存儲

    下面小編就為大家?guī)硪黄獪\談Java數(shù)組的一些使用方法及堆棧存儲。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07

最新評論

炎陵县| 乐山市| 叶城县| 安仁县| 遂溪县| 县级市| 夏津县| 遂昌县| 峨眉山市| 视频| 海伦市| 台中市| 蒲江县| 通许县| 琼结县| 灌云县| 东乡| 青浦区| 招远市| 车险| 祁阳县| 巴林左旗| 苗栗县| 翁牛特旗| 东方市| 舟曲县| 青浦区| 宁化县| 弥勒县| 得荣县| 黄平县| 布拖县| 绥德县| 永仁县| 汝州市| 寿宁县| 铁岭县| 两当县| 霍林郭勒市| 荆州市| 建始县|