一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java如何將pdf轉換成image

java如何將pdf轉換成image

2021-04-25 12:04yiluoak_47 Java教程

這篇文章主要為大家詳細介紹了java如何將pdf轉換成image,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了javapdf轉換image的具體代碼,供大家參考,具體內容如下

首先使用了使用了apache的pdfbox組件1.8.4版本

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package pdf;
 
import java.awt.image.bufferedimage;
import java.io.file;
import java.io.ioexception;
import java.util.date;
import java.util.list;
 
import javax.imageio.imageio;
 
import org.apache.pdfbox.pdmodel.pddocument;
import org.apache.pdfbox.pdmodel.pdpage;
 
public class pdfbox {
   
  @suppresswarnings("rawtypes")
  public static void main(string[] args) throws ioexception {
    string p=system.getproperty("user.dir") + "/"+"zk.pdf";  
     
    pddocument doc = pddocument.load(p);
    int pagecount = doc.getnumberofpages();
    system.out.println(pagecount);
    date start = new date();
    try {
      list pages = doc.getdocumentcatalog().getallpages();
      for(int i=0;i<pages.size();i++){
        pdpage page = (pdpage) pages.get(i);
        @suppresswarnings("unused")
        int width = new float(page.gettrimbox().getwidth()).intvalue();
        @suppresswarnings("unused")
        int height = new float(page.gettrimbox().getheight()).intvalue();
        bufferedimage image = page.converttoimage();
        imageio.write(image, "jpg", new file("img" + file.separator + (i + 1) + ".jpg"));
        system.out.println("image in the page -->"+(i+1));
      }
    } catch (exception e) {
      e.printstacktrace();
    }finally{
      if(doc != null){
        doc.close();
      }
    }
    date end = new date();
    system.out.println(end.gettime()-start.gettime());
    system.out.println("over");
  }
   
}

但是其問題在于問題:

當pdf文檔為180m大小時直接報解析異常

當pdf頁數為500多頁時處理非常慢 

其后嘗試使用了pdf-renderer 1.0.5 版本

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package pdf;
 
import java.awt.image;
import java.awt.rectangle;
import java.awt.image.bufferedimage;
import java.io.file;
import java.io.fileoutputstream;
import java.io.ioexception;
import java.io.randomaccessfile;
import java.nio.mappedbytebuffer;
import java.nio.channels.filechannel;
 
import com.sun.image.codec.jpeg.jpegcodec;
import com.sun.image.codec.jpeg.jpegencodeparam;
import com.sun.image.codec.jpeg.jpegimageencoder;
import com.sun.pdfview.pdffile;
import com.sun.pdfview.pdfpage;
 
public class pdfrenderer {
   
  public static void main(string[] args) throws ioexception{
    string pdfrealepath=system.getproperty("user.dir") + "/"+"zk.pdf";
    file file = new file(pdfrealepath);
    randomaccessfile raf = new randomaccessfile(file, "r");
    filechannel channel = raf.getchannel();
    mappedbytebuffer buf = channel.map(filechannel.mapmode.read_only,
        0, channel.size());
    pdffile pdffile = new pdffile(buf);
     
    for (int i = 1; i <= pdffile.getnumpages(); i++) {
      pdfpage page = pdffile.getpage(i);
      rectangle rect = new rectangle(0, 0, ((int) page.getbbox()
          .getwidth()), ((int) page.getbbox().getheight()));
      image img = page.getimage(rect.width, rect.height, rect, null,true,true);
      bufferedimage tag = new bufferedimage(rect.width, rect.height,
          bufferedimage.type_int_rgb);
      tag.getgraphics().drawimage(img, 0, 0, rect.width, rect.height,null);
       
      fileoutputstream out = new fileoutputstream("img" + file.separator + (i + 1) + ".jpg"); // 輸出到文件流
      jpegimageencoder encoder = jpegcodec.createjpegencoder(out);
      jpegencodeparam param2 = encoder.getdefaultjpegencodeparam(tag);
      param2.setquality(1f, false);// 1f是提高生成的圖片質量
      encoder.setjpegencodeparam(param2);
      encoder.encode(tag); // jpeg編碼
      out.close();
      system.out.println("image in the page -->"+(i+1));
    }
  }
}

但是其問題在于問題: 當pdf的版本不為1.4時,直接報錯:expected 'xref' at start of table

pdfbox與pdfrenderer相比較來說,轉換的效率要低得多。200頁左右的pdf花費的時間是后者的6倍左右。同時,對于中文字體的支持存在些問題。

但是對于卻不存在pdf版本不同無法轉換的問題。

pdfrenderer 不能轉換1.4以上版本,查找了解決辦法但是沒有找到。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/yiluoak_47/article/details/25150419

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产色视频一区二区三区 | 我和寂寞孕妇的性事 | 日韩欧美亚洲一区二区综合 | chinesehdxxx吃奶水 | mm在线| julianann办公室| ak福利影院 | 天天综合色天天综合网 | 国产精品视频免费看 | 视频一区国产精戏刘婷 | 午夜影院0606免费 | 成人伊人青草久久综合网破解版 | 大陆男同志gayxxx | 亚洲丁香网| 丝瓜视频黄瓜视频 | 香蕉免费一区二区三区在线观看 | 日本大学生xxxxx69泡妞 | 91亚洲精品丁香在线观看 | 日韩毛片网 | 青草园网站在线观看 | 男女做受快插大片 | 亚洲精品青青草原avav久久qv | 国产精品aⅴ| 双性肉文h | 国产99re在线观看69热 | 朝鲜女人free性xxe | 美日韩一区二区三区 | 天天色天天舔 | 韩国日本在线观看 | 国产成人综合精品 | 国产黄频 | 99小视频 | yw在线观看成人免费 | 香蕉久久久 | 午夜精品久久久久 | 欧美a在线观看 | chinaese中国女人厕所小便 | 国产成人小视频在线观看 | 欧美日本一区视频免费 | 欧美人shou交在线播放 | 亚洲乱亚洲乱妇41p 亚洲乱码一区二区三区国产精品 |