溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://www.aygfsteel.com/sxyx2008/謝謝合作!!!

          雪山飛鵠

          溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://www.aygfsteel.com/sxyx2008/謝謝合作!!!

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            215 Posts :: 1 Stories :: 674 Comments :: 0 Trackbacks
          package effective.java;

          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.ByteBuffer;
          import java.nio.channels.FileChannel;
          import javax.swing.SwingUtilities;
          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 PdfToJpgTest {
              
          public static void setup() throws IOException {

                  
          // load a pdf from a byte buffer
                  File file = new File("D:\\workspace\\word2pdf\\src\\tests.doc.pdf");
                  RandomAccessFile raf 
          = new RandomAccessFile(file, "r");
                  FileChannel channel 
          = raf.getChannel();
                  ByteBuffer buf 
          = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel
                          .size());
                  PDFFile pdffile 
          = new PDFFile(buf);

                  System.out.println(
          "頁數: " + pdffile.getNumPages());

                  String getPdfFilePath 
          = System.getProperty("user.dir"+ "\\pdfPicFile";

                  System.out.println(
          "getPdfFilePath is  :" + getPdfFilePath);

                  
          for (int i = 1; i <= pdffile.getNumPages(); i++) {
                      
          // draw the first page to an image
                      PDFPage page = pdffile.getPage(i);

                      
          // get the width and height for the doc at the default zoom
                      Rectangle rect = new Rectangle(00, (int) page.getBBox()
                              .getWidth(), (
          int) page.getBBox().getHeight());

                      
          // generate the image
                      Image img = page.getImage(rect.width, rect.height, // width &
                              
          // height
                              rect, // clip rect
                              null// null for the ImageObserver
                              true// fill background with white
                              true // block until drawing is done
                              );

                      BufferedImage tag 
          = new BufferedImage(rect.width, rect.height,
                              BufferedImage.TYPE_INT_RGB);
                      tag.getGraphics().drawImage(img, 
          00, rect.width, rect.height,
                              
          null);

                      
          // 輸出到文件流
                      FileOutputStream out = new FileOutputStream(getPdfFilePath + "\\"
                              
          + i + ".jpg");
                      System.out.println(
          "成功保存圖片到:" + getPdfFilePath + "\\" + i + ".jpg");

                      
          /*
                       * JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
                       * encoder.encode(tag); // JPEG編碼 out.close();
                       
          */

                      JPEGImageEncoder encoder 
          = JPEGCodec.createJPEGEncoder(out);
                      JPEGEncodeParam param2 
          = encoder.getDefaultJPEGEncodeParam(tag);
                      param2.setQuality(1f, 
          false);// 1f是提高生成的圖片質量
                      encoder.setJPEGEncodeParam(param2);
                      encoder.encode(tag); 
          // JPEG編碼
                      out.close();

                  }

                  
          // show the image in a frame
                  
          // JFrame frame = new JFrame("PDF Test");
                  
          // frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                  
          // frame.add(new JLabel(new ImageIcon(img)));
                  
          // frame.pack();
                  
          // frame.setVisible(true);
              }

              
          public static void main(final String[] args) {
                  SwingUtilities.invokeLater(
          new Runnable() {
                      
          public void run() {
                          
          try {
                              PdfToJpgTest.setup();
                          } 
          catch (IOException ex) {
                              ex.printStackTrace();
                          }
                      }
                  });
              }

          }
          依賴的jar包
          PDFRenderer.jar
          posted on 2011-06-17 11:34 雪山飛鵠 閱讀(3389) 評論(2)  編輯  收藏 所屬分類: javase

          Feedback

          # re: java轉換pdf to jpg 2011-10-19 11:54 web
          sun.awt.image.ImageFormatException: Unsupported color conversion request
          at sun.awt.image.JPEGImageDecoder.readImage(Native Method)
          at sun.awt.image.JPEGImageDecoder.produceImage(JPEGImageDecoder.java:119)
          at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:246)
          at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172)
          at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)  回復  更多評論
            

          # re: java轉換pdf to jpg[未登錄] 2016-07-12 12:30 1
          111  回復  更多評論
            

          主站蜘蛛池模板: 安丘市| 玉山县| 沁阳市| 藁城市| 吴江市| 松桃| 金寨县| 承德市| 大足县| 高青县| 昭平县| 新闻| 霍林郭勒市| 邢台市| 孝义市| 锡林浩特市| 花莲县| 牙克石市| 麟游县| 大同市| 墨脱县| 青河县| 资源县| 洛阳市| 富锦市| 靖远县| 新竹市| 黔江区| 河北省| 琼海市| 宿松县| 无锡市| 疏勒县| 广州市| 特克斯县| 五河县| 越西县| 玉门市| 平陆县| 江都市| 新昌县|