国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

java如何將pdf轉換成image

2024-07-14 08:40:34
字體:
來源:轉載
供稿:網友

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

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

 

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 版本

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以上版本,查找了解決辦法但是沒有找到。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 开远市| 苍南县| 花垣县| 云林县| 福建省| 唐山市| 迭部县| 安图县| 大姚县| 拜城县| 惠州市| 那坡县| 邓州市| 吉林市| 望谟县| 崇明县| 米易县| 盘山县| 台江县| 蒙城县| 黑河市| 英超| 五峰| 会宁县| 馆陶县| 永寿县| 湖南省| 宁波市| 裕民县| 勐海县| 德保县| 丁青县| 海林市| 肇庆市| 扎鲁特旗| 郎溪县| 白银市| 崇义县| 锡林浩特市| 多伦县| 吉林省|