2011-02-08 46 views

Trả lời

28

Bạn có thể thử pdf-renderer nó là một giải pháp java thuần túy. Đoạn mã sau tạo một hình ảnh của trang đầu tiên.

File pdfFile = new File("/path/to/pdf.pdf"); 
RandomAccessFile raf = new RandomAccessFile(pdfFile, "r"); 
FileChannel channel = raf.getChannel(); 
ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size()); 
PDFFile pdf = new PDFFile(buf); 
PDFPage page = pdf.getPage(0); 

// create the image 
Rectangle rect = new Rectangle(0, 0, (int) page.getBBox().getWidth(), 
           (int) page.getBBox().getHeight()); 
BufferedImage bufferedImage = new BufferedImage(rect.width, rect.height, 
            BufferedImage.TYPE_INT_RGB); 

Image image = 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 
); 
Graphics2D bufImageGraphics = bufferedImage.createGraphics(); 
bufImageGraphics.drawImage(image, 0, 0, null); 
ImageIO.write(bufferedImage, format, new File("/path/to/image.jpg")); 
9

Tuyệt vời sdorra, cảm ơn bạn đã nhập. Tôi đã làm lại ví dụ của bạn để chuyển đổi tất cả các trang từ pdf.

Hy vọng rằng sẽ giúp một số bạn.

import java.awt.Graphics2D; 
import java.awt.Image; 
import java.awt.Rectangle; 
import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 
import java.io.RandomAccessFile; 
import java.nio.ByteBuffer; 
import java.nio.channels.FileChannel; 

import javax.imageio.ImageIO; 

import com.sun.pdfview.PDFFile; 
import com.sun.pdfview.PDFPage; 

public class Main { 

    public static void main(String[] args) throws IOException { 
     File pdfFile = new File("c:\\YOURPDF.pdf"); 
     RandomAccessFile raf = new RandomAccessFile(pdfFile, "r"); 
     FileChannel channel = raf.getChannel(); 
     ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size()); 
     PDFFile pdf = new PDFFile(buf); 

     for (int i=0; i<pdf.getNumPages(); i++) { 
      createImage(pdf.getPage(i), "c:\\PICTURE_" + i + ".jpg"); 
     } 
    } 

    public static void createImage(PDFPage page, String destination) throws IOException{ 
     Rectangle rect = new Rectangle(0, 0, (int) page.getBBox().getWidth(), 
       (int) page.getBBox().getHeight()); 
     BufferedImage bufferedImage = new BufferedImage(rect.width, rect.height, 
         BufferedImage.TYPE_INT_RGB); 

     Image image = 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 
     ); 
     Graphics2D bufImageGraphics = bufferedImage.createGraphics(); 
     bufImageGraphics.drawImage(image, 0, 0, null); 
     ImageIO.write(bufferedImage, "JPG", new File(destination)); 
    } 

} 

Bạn có thể tải thư viện từ pdf-renderer-1.0.5.jar

The Source for Java Technology Collaboration website

Các vấn đề liên quan