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

Java使用itextpdf實(shí)現(xiàn)PDF轉(zhuǎn)文本以及轉(zhuǎn)圖片

 更新時(shí)間:2025年01月09日 09:34:39   作者:信計(jì)2102羅鎧威  
PDF轉(zhuǎn)文本的插件常用的有pdfbox ,itextpdf 和 spire.pdf,本文主要介紹如何使用itextpdf實(shí)現(xiàn)PDF轉(zhuǎn)文本以及轉(zhuǎn)圖片,需要的可以參考一下

前言

PDF轉(zhuǎn)文本的插件常用的有:pdfbox ,itextpdf 和 spire.pdf 這幾個(gè),

itextpdf

導(dǎo)入itextpdf的maven依賴

        <!--2.itexpdf依賴-->
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.13.3</version>
        </dependency>

提取文本代碼

import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.parser.PdfTextExtractor;
import java.io.*;

public class Main_itextPdf {

    public static void main(String[] args) throws Exception {
        System.out.println("------------------------pdf提取文本開始------------------------------");
            // 2. 加載PDF文件
        File file = new File("C:/Users/Administrator/Desktop/羅鎧威個(gè)人簡歷.pdf");
            PdfReader reader = new PdfReader(file.getAbsolutePath());

            // 3. 解析PDF文件,獲取頁面數(shù)據(jù)
            int page = 1; // 獲取第一頁
            String text = PdfTextExtractor.getTextFromPage(reader, page);
            System.out.println(text);
            // 4. 關(guān)閉PdfReader
            reader.close();
        System.out.println("------------------------pdf提取文本結(jié)束------------------------------");
        }
}

pdf轉(zhuǎn)換成圖片代碼

本地圖片地址還是線上PDF的URL地址均支持

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
import java.util.Scanner;

public class Main_itextPdf {

    public static void main(String[] args) throws Exception {
        System.out.println("------------------------pdf轉(zhuǎn)圖片開始------------------------------");
//        InputStream inputStream = readPdfFromUrl("http://minio.xxxx/xxxx.pdf");//線上的pdf文件
        InputStream inputStream = new FileInputStream("C:/Users/Administrator/Desktop/羅鎧威個(gè)人簡歷.pdf") ;
        byte[] bytes = streamToByte(inputStream);
        InputStream newStream = new ByteArrayInputStream(bytes);
        //將pdf流轉(zhuǎn)換成png圖片流
        InputStream imgStream = pdfToImg(newStream);
        //存儲(chǔ)圖片imgStream到桌面
        ImageIO.write(ImageIO.read(imgStream), "png", new File("C:/Users/Administrator/Desktop/1.png"));
        System.out.println("------------------------pdf轉(zhuǎn)圖片結(jié)束------------------------------");
    }

    //支持線上pdf文件地址url
    public static InputStream readPdfFromUrl(String pdfUrl) throws IOException {
        URL url = new URL(pdfUrl);
        URLConnection connection = url.openConnection();
        BufferedInputStream bufferedInputStream = new BufferedInputStream(connection.getInputStream());
        return bufferedInputStream;
    }

    public static ByteArrayInputStream pdfToImg(InputStream pdfStream) throws Exception {
        // 將 InputStream 轉(zhuǎn)換為 PDDocument
        PDDocument document = PDDocument.load(pdfStream);

        // 創(chuàng)建 PDFRenderer 對象
        PDFRenderer pdfRenderer = new PDFRenderer(document);

        // 選擇第一頁面來生成圖片
        // 可以根據(jù)需要改成遍歷所有頁面并保存
        BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(0, 300); // 0 表示第一頁,300 DPI 提供高質(zhì)量圖像

        // 將 BufferedImage 轉(zhuǎn)換為 InputStream
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        ImageIO.write(bufferedImage, "PNG", byteArrayOutputStream);
        document.close();
        // 返回一個(gè)新的 InputStream
        return new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
    }
    public static byte[] streamToByte(InputStream inputStream) throws Exception {
        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
        int nRead;
        byte[] data = new byte[1024];
        while ((nRead = inputStream.read(data, 0, data.length)) != -1) {
            buffer.write(data, 0, nRead);
        }
        buffer.flush();
        return buffer.toByteArray();
    }

}

到此這篇關(guān)于Java使用itextpdf實(shí)現(xiàn)PDF轉(zhuǎn)文本以及轉(zhuǎn)圖片的文章就介紹到這了,更多相關(guān)Java itextpdf PDF轉(zhuǎn)文本和圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解java.lang.NumberFormatException錯(cuò)誤及解決辦法

    詳解java.lang.NumberFormatException錯(cuò)誤及解決辦法

    這篇文章主要介紹了詳解java.lang.NumberFormatException錯(cuò)誤及解決辦法,本文詳解的介紹了錯(cuò)誤的解決方法,感興趣的可以一起來了解一下
    2020-05-05
  • shiro整合swagger的注意事項(xiàng)

    shiro整合swagger的注意事項(xiàng)

    這篇文章主要介紹了shiro整合swagger需要注意的地方,幫助大家更好的理解和學(xué)習(xí)使用shiro框架,感興趣的朋友可以了解下
    2021-05-05
  • maven+springboot打成jar包的方法

    maven+springboot打成jar包的方法

    這篇文章主要介紹了maven+springboot打成jar包的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-10-10
  • Java集合刪除元素ArrayList實(shí)例詳解

    Java集合刪除元素ArrayList實(shí)例詳解

    這篇文章主要介紹了Java集合刪除元素ArrayList實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Java 深入分析鏈表面試實(shí)例題目

    Java 深入分析鏈表面試實(shí)例題目

    鏈表是一種物理存儲(chǔ)單元上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的,本篇帶你通過兩個(gè)實(shí)例題目來深入探索
    2022-03-03
  • SpringBoot整合SpringSecurityOauth2實(shí)現(xiàn)鑒權(quán)動(dòng)態(tài)權(quán)限問題

    SpringBoot整合SpringSecurityOauth2實(shí)現(xiàn)鑒權(quán)動(dòng)態(tài)權(quán)限問題

    這篇文章主要介紹了SpringBoot整合SpringSecurityOauth2實(shí)現(xiàn)鑒權(quán)-動(dòng)態(tài)權(quán)限,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 解析Java并發(fā)Exchanger的使用

    解析Java并發(fā)Exchanger的使用

    Exchanger是java 5引入的并發(fā)類,Exchanger顧名思義就是用來做交換的。這里主要是兩個(gè)線程之間交換持有的對象。當(dāng)Exchanger在一個(gè)線程中調(diào)用exchange方法之后,會(huì)等待另外的線程調(diào)用同樣的exchange方法。兩個(gè)線程都調(diào)用exchange方法之后,傳入的參數(shù)就會(huì)交換。
    2021-06-06
  • Java?八種基本數(shù)據(jù)類型最新整理

    Java?八種基本數(shù)據(jù)類型最新整理

    這篇文章給大家分享Java八種基本數(shù)據(jù)類型,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-06-06
  • 5分鐘讓你快速掌握java8 stream常用開發(fā)技巧

    5分鐘讓你快速掌握java8 stream常用開發(fā)技巧

    這篇文章主要給大家介紹了關(guān)于java8 stream常用開發(fā)技巧的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Spring在多線程環(huán)境下如何確保事務(wù)一致性問題詳解

    Spring在多線程環(huán)境下如何確保事務(wù)一致性問題詳解

    這篇文章主要介紹了Spring在多線程環(huán)境下如何確保事務(wù)一致性問題詳解,說到異步執(zhí)行,很多小伙伴首先想到Spring中提供的@Async注解,但是Spring提供的異步執(zhí)行任務(wù)能力并不足以解決我們當(dāng)前的需求,需要的朋友可以參考下
    2023-11-11

最新評論