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

SpringBoot實(shí)現(xiàn)PDF轉(zhuǎn)圖片的代碼示例

 更新時(shí)間:2024年08月11日 10:00:59   作者:TandK  
在本文中,我們使用SpringBoot演示了如何將PDF文件轉(zhuǎn)換為一張或多張圖片,這些示例演示了如何使用Java編程語言與其他開源技術(shù)集成,以實(shí)現(xiàn)各種文件格式之間的轉(zhuǎn)換,感興趣的小伙伴跟著小編一起來看看吧

不是單頁圖片,是多頁P(yáng)DF轉(zhuǎn)成一張圖片的邏輯。

我這里的場景是PDF轉(zhuǎn)成圖片之后返回給前端,前端再在圖片上實(shí)現(xiàn)簽字,并且可拖拽的邏輯,就是簽訂合同的場景。

但是這里只寫后端多頁P(yáng)DF轉(zhuǎn)圖片的邏輯。

先說邏輯,后面直接上代碼,大致分為以下幾步:

  1. 讀取PDF文件(我的代碼里是將在線的URL轉(zhuǎn)成InputStream了)
  2. 按PDF的頁面循環(huán)計(jì)算圖片的寬度和高度,其中寬度為PDF最寬的那一頁的寬度(畢竟有的PDF比較騷,可能一頁是橫的,一頁是豎的),高度為所有頁面加起來的高度
  3. 用Graphics2D繪制
  4. 將Graphics2D的繪制結(jié)果輸出為圖片(只要有outputStream都好說,我這里是輸出成base64給前端了,沒什么存起來的必要)

好了,直接上代碼:

先在pom.xml導(dǎo)入依賴:

		<!--   pdf讀取     -->
        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox</artifactId>
            <version>2.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>fontbox</artifactId>
            <version>2.0.1</version>
        </dependency>
	public String getSinglePicBase64Contracts(String fileUrl) throws IOException {
        byte[] pdfBytes = HttpUtil.createGet(fileUrl).execute().bodyBytes();
        InputStream inputStream = new ByteArrayInputStream(pdfBytes);
        PDDocument doc = PDDocument.load(inputStream);
        PDFRenderer pdfRenderer = new PDFRenderer(doc);
        List<BufferedImage> imageList = new ArrayList<>(doc.getNumberOfPages());
        int maxWidth = 0;
        int totalHeight = 0;
        for (int i = 0; i < doc.getNumberOfPages(); i++) {
            BufferedImage image = pdfRenderer.renderImage(i, 1.25f);
            imageList.add(image);
            if (image.getWidth() > maxWidth) {
                maxWidth = image.getWidth();
            }
            totalHeight += image.getHeight();
        }
        // 繪制結(jié)果
        BufferedImage result = new BufferedImage(maxWidth, totalHeight, BufferedImage.TYPE_INT_RGB);
        Graphics2D g2d = result.createGraphics();
        int nowHeight = 0;
        for (BufferedImage bufferedImage : imageList) {
        	// padding 為頁面的左邊距
            int padding = (maxWidth - bufferedImage.getWidth()) / 2;
            g2d.drawImage(bufferedImage, padding, nowHeight, null);
            nowHeight += bufferedImage.getHeight();
        }
        ByteArrayOutputStream outputStream =  new ByteArrayOutputStream();
        ImageIO.write(result, "png", outputStream);
        String singlePicBase64 = "data:image/png;base64," + Base64.encodeBase64String(outputStream.toByteArray());
        return singlePicBase64;
    }

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

相關(guān)文章

  • SpringBoot如何配置文件properties和yml

    SpringBoot如何配置文件properties和yml

    這篇文章主要介紹了SpringBoot如何配置文件properties和yml問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • logback-spring.xml配置詳解

    logback-spring.xml配置詳解

    這篇文章主要介紹了logback-spring.xml詳解,本文介紹了logback-spring.xml相關(guān)的知識與概念,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • 解決從Map、JSONObject取不存在鍵值對時(shí)的異常情況

    解決從Map、JSONObject取不存在鍵值對時(shí)的異常情況

    這篇文章主要介紹了解決從Map、JSONObject取不存在鍵值對時(shí)的異常情況,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Java實(shí)現(xiàn)遞歸刪除菜單和目錄及目錄下所有文件

    Java實(shí)現(xiàn)遞歸刪除菜單和目錄及目錄下所有文件

    這篇文章主要為大家詳細(xì)介紹了Java如何實(shí)現(xiàn)遞歸刪除菜單和刪除目錄及目錄下所有文件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下
    2025-03-03
  • 最新評論