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

java中pdf轉(zhuǎn)圖片的實(shí)現(xiàn)方法

 更新時(shí)間:2016年12月12日 10:50:49   投稿:jingxian  
下面小編就為大家?guī)硪黄猨ava中pdf轉(zhuǎn)圖片的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

JAVA中實(shí)現(xiàn)pdf轉(zhuǎn)圖片可以通過第三方提供的架包,這里介紹幾種常用的,可以根據(jù)自身需求選擇使用。

一、icepdf。有收費(fèi)版和開源版,幾種方法里最推薦的。轉(zhuǎn)換的效果比較好,能識(shí)別我手頭文件中的中文,就是轉(zhuǎn)換后可能字體的關(guān)系部分字間距有點(diǎn)寬。因?yàn)?,字體支持是要收費(fèi)的,所以轉(zhuǎn)換的圖片會(huì)帶有官方的水印。去水印的方法可以查看另一篇文章:icepdf去水印方法

1、下載icepdf的架包,并導(dǎo)入項(xiàng)目中,這里用到4個(gè),如下:

2、附上代碼例子:

  String filePath = "c:/test.pdf";
  Document document = new Document();
  document.setFile(filePath);
  float scale = 2.5f;//縮放比例
  float rotation = 0f;//旋轉(zhuǎn)角度
    
  for (int i = 0; i < document.getNumberOfPages(); i++) {
    BufferedImage image = (BufferedImage)
    document.getPageImage(i, GraphicsRenderingHints.SCREEN, org.icepdf.core.pobjects.Page.BOUNDARY_CROPBOX, rotation, scale);
    RenderedImage rendImage = image;
    try {
      File file = new File("c:/iecPDF_" + i + ".png");
      ImageIO.write(rendImage, "png", file); 
14     } catch (IOException e) {
      e.printStackTrace();
    }
    image.flush();
  }
  document.dispose();

例子中是pdf轉(zhuǎn)png格式的,也可以將12、13行改成jpg,轉(zhuǎn)出jpg格式的,但是從轉(zhuǎn)換效果來看png的清晰度會(huì)相對(duì)較高。有個(gè)小技巧是12行改成jpg,但13行使用png,也就是轉(zhuǎn)換成jpg格式但有png清晰度的圖片。

二、pdfbox。轉(zhuǎn)換效果還可以,能識(shí)別我手中文件大部分內(nèi)容,有部分內(nèi)容無法識(shí)別。

1、下載pdfbox的架包,并導(dǎo)入項(xiàng)目,這里用到2個(gè),如下:

2、附上代碼例子:

  File file = new File("c:\\test.pdf");
  try {
    PDDocument doc = PDDocument.load(file);
    PDFRenderer renderer = new PDFRenderer(doc);
 5     int pageCount = doc.getNumberOfPages();
    for(int i=0;i<pageCount;i++){
      BufferedImage image = renderer.renderImageWithDPI(i, 296);
//     BufferedImage image = renderer.renderImage(i, 2.5f);
      ImageIO.write(image, "PNG", new File("C:\\pdfbox_image.png"));
    }
  } catch (IOException e) {
    e.printStackTrace();
  }

例子中rederImageWithDPI的第二個(gè)參數(shù)為dpi分辨率單位,可根據(jù)需求調(diào)節(jié)大小,代碼第八行提供了架包里另一種轉(zhuǎn)圖片的方法,第二個(gè)參數(shù)為縮放比。

三、jpedal。效果不太理想,貌似對(duì)中文支持不太好,下面的lgpl版本是開源版。

1、下載jpedal的架包,并導(dǎo)入項(xiàng)目中,如下:

2、附上代碼例子:

  PdfDecoder decode_pdf = new PdfDecoder(true);
  try {
    decode_pdf.openPdfFile("c:\\test.pdf"); //file
//   decode_pdf.openPdfFile("C:/jpedalPDF.pdf", "password"); //encrypted file
//   decode_pdf.openPdfArray(bytes); //bytes is byte[] array with PDF
//   decode_pdf.openPdfFileFromURL("http://www.mysite.com/jpedalPDF.pdf",false);
//   decode_pdf.openPdfFileFromInputStream(in, false); 

    int start = 1, end = decode_pdf.getPageCount();
    for(int i = start; i < end+1; i++){
      BufferedImage img=decode_pdf.getPageAsImage(i);
      try {
        ImageIO.write(img, "png", new File("C:\\jpedal_image.png"));
      } catch (IOException e) {
        e.printStackTrace();
      } 
    }
    decode_pdf.closePdfFile();
  } catch (PdfException e) {
    e.printStackTrace();
  }

例子的3-7行還提供了幾種不同的pdf打開方式,可以根據(jù)自己的需要選擇使用。

以上這篇java中pdf轉(zhuǎn)圖片的實(shí)現(xiàn)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java8的Lambda遍歷兩個(gè)List匹配數(shù)據(jù)方式

    Java8的Lambda遍歷兩個(gè)List匹配數(shù)據(jù)方式

    這篇文章主要介紹了Java8的Lambda遍歷兩個(gè)List匹配數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • MyBatis Mapper.xml中的命名空間及命名方式

    MyBatis Mapper.xml中的命名空間及命名方式

    這篇文章主要介紹了MyBatis Mapper.xml中的命名空間及命名方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 詳解如何使用Java編寫圖形化的窗口

    詳解如何使用Java編寫圖形化的窗口

    這篇文章主要介紹了如何使用Java編寫圖形化的窗口,是Java的本地GUI軟件開發(fā)的基礎(chǔ),需要的朋友可以參考下
    2015-10-10
  • 基于springboot搭建的web系統(tǒng)架構(gòu)的方法步驟

    基于springboot搭建的web系統(tǒng)架構(gòu)的方法步驟

    這篇文章主要介紹了基于springboot搭建的web系統(tǒng)架構(gòu)的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-04-04
  • 解決springboot啟動(dòng)失敗的問題('hibernate.dialect'?not?set)

    解決springboot啟動(dòng)失敗的問題('hibernate.dialect'?not?set)

    這篇文章主要介紹了解決springboot啟動(dòng)失敗的問題('hibernate.dialect'?not?set),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • RandomAccessFile簡(jiǎn)介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    RandomAccessFile簡(jiǎn)介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    RandomAccessFile 是隨機(jī)訪問文件(包括讀/寫)的類。它支持對(duì)文件隨機(jī)訪問的讀取和寫入,即我們可以從指定的位置讀取/寫入文件數(shù)據(jù)。這篇文章主要介紹了RandomAccessFile簡(jiǎn)介,需要的朋友可以參考下
    2017-05-05
  • Spring AI內(nèi)置DeepSeek的詳細(xì)步驟

    Spring AI內(nèi)置DeepSeek的詳細(xì)步驟

    Spring AI 最新快照版已經(jīng)內(nèi)置 DeepSeek 了,所以以后項(xiàng)目中對(duì)接 DeepSeek 就方便多了,但因?yàn)榭煺瞻鏁?huì)有很多 Bug,所以今天咱們就來看穩(wěn)定版的 Spring AI 如何對(duì)接 DeepSeek 滿血版,感興趣的小伙伴跟著小編一起來看看吧
    2025-02-02
  • 使用Java獲取文件樹的代碼實(shí)現(xiàn)

    使用Java獲取文件樹的代碼實(shí)現(xiàn)

    Java語言提供了豐富的庫和工具,使得我們可以方便地獲取和操作Java文件的語法樹(AST, Abstract Syntax Tree),在這篇博客中,我們將探討如何使用Java來獲取一個(gè)Java文件的語法樹,并展示詳細(xì)的代碼示例和運(yùn)行結(jié)果,需要的朋友可以參考下
    2024-08-08
  • SpringBoot整合阿里云短信服務(wù)的案例代碼

    SpringBoot整合阿里云短信服務(wù)的案例代碼

    這篇文章主要介紹了SpringBoot整合阿里云短信服務(wù)的案例代碼,在Spring Boot項(xiàng)目的pom.xml文件中添加阿里云短信服務(wù)SDK的依賴,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2024-06-06
  • 詳解java中import的作用

    詳解java中import的作用

    這篇文章主要介紹了java中import作用,import與package機(jī)制相關(guān),這里先從package入手,再講述import以及static import的作用。
    2021-04-04

最新評(píng)論

冀州市| 泸西县| 错那县| 万全县| 巢湖市| 天镇县| 华池县| 祁门县| 阳西县| 南和县| 吉隆县| 普陀区| 漯河市| 富川| 焉耆| 阳泉市| 从化市| 密云县| 梁山县| 临夏县| 莱州市| 攀枝花市| 讷河市| 长葛市| 潼关县| 建德市| 朔州市| 怀集县| 陇川县| 二连浩特市| 沂南县| 龙游县| 贵州省| 博客| 明星| 洛阳市| 灵台县| 雅江县| 三江| 武城县| 金昌市|