欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java讀寫pdf文件的詳細(xì)實(shí)現(xiàn)方法

 更新時(shí)間:2023年09月28日 09:30:40   作者:Inspire2023  
最近公司的項(xiàng)目中需要操作pdf文件,所以這里給大家總結(jié)下方法,這篇文章主要給大家介紹了關(guān)于Java讀寫pdf文件的詳細(xì)實(shí)現(xiàn)方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

Java讀寫pdf文件

在OA業(yè)務(wù)開發(fā)中,經(jīng)常需要java后臺(tái)讀取或生成pdf文件,
itextpdf是一個(gè)常用的java操作pdf的開源庫

物料準(zhǔn)備:

1.引入itextpdf依賴

2.定義Text2PdfUtil工具類

引入itextpdf相關(guān)的依賴

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

定義工具類Text2PdfUtil.java

package cn.ath.knowwikibackend.util;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.parser.PdfTextExtractor;
import java.io.*;
import java.nio.charset.Charset;
/**
 * 需要引入的依賴
 *
 * <dependency>
 *             <groupId>com.itextpdf</groupId>
 *             <artifactId>itext-asian</artifactId>
 *             <version>5.2.0</version>
 *         </dependency>
 *
 *         <dependency>
 *             <groupId>com.itextpdf</groupId>
 *             <artifactId>itextpdf</artifactId>
 *             <version>5.5.13</version>
 *         </dependency>
 *
 */
public class Text2PdfUtil {
    /**
     * txt文本文件  轉(zhuǎn)pdf文件
     * @param text   F:/data/te616.txt
     * @param pdf  F:/data/aet618.pdf
     * @throws DocumentException
     * @throws IOException
     */
    public static void text2pdf(String text,String pdf) throws DocumentException, IOException {
        Document doc = new Document();
        OutputStream os = new FileOutputStream(new File(pdf));
        PdfWriter.getInstance(doc, os);
        doc.open();
        //指定 使用內(nèi)置的中文字體
        BaseFont baseFont =
                BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);
        Font font = new Font(baseFont,12,Font.NORMAL);
        //指定輸出編碼為UTF-8
        InputStreamReader isr = new InputStreamReader(
                new FileInputStream(new File(text)), Charset.forName("UTF-8"));
        BufferedReader br = new BufferedReader(isr);
        String str = "";
        while((str = br.readLine()) != null){
            doc.add(new Paragraph(str,font));
        }
        isr.close();
        br.close();
        doc.close();
    }
    /**
     * 讀取pdf文件的內(nèi)容
     * @param filename  F:/data/aet618.pdf
     * @return  String
     */
    public static String readPDF(String filename){
        StringBuilder result = new StringBuilder();
        try {
            PdfReader reader = new PdfReader(filename);
            int countPage = reader.getNumberOfPages();
            for(int i=1;i<=countPage;i++){
                result.append(PdfTextExtractor.getTextFromPage(reader, i));
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result.toString();
    }
}

測試

@Test
    void contextLoads() throws DocumentException, IOException {
        String txtPath = "E:/test617.txt";
        String pdfPath = "E:/test617.pdf";
        Text2PdfUtil.text2pdf(txtPath,pdfPath);
        System.out.println(Text2PdfUtil.readPDF(pdfPath));
    }

總結(jié)

到此這篇關(guān)于Java讀寫pdf文件的詳細(xì)實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)Java讀寫pdf文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java多態(tài)性定義與用法實(shí)例詳解

    Java多態(tài)性定義與用法實(shí)例詳解

    這篇文章主要介紹了Java多態(tài)性定義與用法,較為詳細(xì)的分析了多態(tài)的概念、功能以及java定義與實(shí)現(xiàn)面向?qū)ο蠖鄳B(tài)性的相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • Spring 事件監(jiān)聽機(jī)制實(shí)現(xiàn)跨模塊調(diào)用的思路詳解

    Spring 事件監(jiān)聽機(jī)制實(shí)現(xiàn)跨模塊調(diào)用的思路詳解

    之前一個(gè)項(xiàng)目,有兩個(gè)模塊,A 模塊需要依賴 B 模塊,但現(xiàn)在 B 模塊有地方需要調(diào)用 A 模塊的方法,如果直接依賴,又會(huì)產(chǎn)生循環(huán)依賴問題,最終選擇使用 spring 的事件監(jiān)聽來解決該問題,下面給大家介紹Spring 事件監(jiān)聽機(jī)制實(shí)現(xiàn)跨模塊調(diào)用的思路,感興趣的朋友一起看看吧
    2024-05-05
  • 學(xué)會(huì)Pulsar Consumer的使用方式

    學(xué)會(huì)Pulsar Consumer的使用方式

    這篇文章主要介紹了Pulsar Consumer的使用方式,全文使用大量的代碼來做了詳細(xì)的講解,感興趣的小伙伴可以參考一下這篇文章,希望讀完能對你有很大的幫助
    2021-08-08
  • Spring??AOP的兩種使用方法

    Spring??AOP的兩種使用方法

    這篇文章主要介紹了Spring?AOP的兩種使用方法,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • 詳解java中的PropertyChangeSupport與PropertyChangeListener

    詳解java中的PropertyChangeSupport與PropertyChangeListener

    這篇文章主要介紹了詳解java中的PropertyChangeSupport與PropertyChangeListener的相關(guān)資料,需要的朋友可以參考下
    2017-09-09
  • 基于LinkedHashMap實(shí)現(xiàn)LRU緩存

    基于LinkedHashMap實(shí)現(xiàn)LRU緩存

    LinkedHashMap是Java集合中一個(gè)常用的容器,它繼承了HashMap, 是一個(gè)有序的Hash表。那么該如何基于LinkedHashMap實(shí)現(xiàn)一個(gè)LRU緩存呢?本文將介紹LinkedHashMap的實(shí)現(xiàn)原理,感興趣的同學(xué)可以參考一下
    2023-05-05
  • 支付寶開發(fā)平臺(tái)之第三方授權(quán)登錄與獲取用戶信息

    支付寶開發(fā)平臺(tái)之第三方授權(quán)登錄與獲取用戶信息

    本文主要介紹了第三方授權(quán)登錄與獲取用戶信息的實(shí)例方法,具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-03-03
  • JAVA基礎(chǔ)之一些不為人知的那些秘密

    JAVA基礎(chǔ)之一些不為人知的那些秘密

    一個(gè) Java 程序可以認(rèn)為是一系列對象的集合,而這些對象通過調(diào)用彼此的方法來協(xié)同工作,下面這篇文章主要給大家介紹了JAVA基礎(chǔ)之一些不為人知的那些秘密,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • 利用Java實(shí)現(xiàn)調(diào)用http請求

    利用Java實(shí)現(xiàn)調(diào)用http請求

    在實(shí)際開發(fā)過程中,我們經(jīng)常需要調(diào)用對方提供的接口或測試自己寫的接口是否合適。本文就為大家準(zhǔn)備了幾個(gè)java調(diào)用http請求的幾種常見方式,需要的可以參考一下
    2022-08-08
  • JPA中EntityListeners注解的使用詳解

    JPA中EntityListeners注解的使用詳解

    這篇文章主要介紹了JPA中EntityListeners注解的使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-01-01

最新評(píng)論