Ai cũng có thể đề xuất cho tôi một thư viện Java miễn phí có thể chuyển đổi PDF và tạo hình thu nhỏ (PNG) từ trang đầu tiên.Chuyển đổi PDF sang hình ảnh thu nhỏ trong Java
Cảm ơn.
Ai cũng có thể đề xuất cho tôi một thư viện Java miễn phí có thể chuyển đổi PDF và tạo hình thu nhỏ (PNG) từ trang đầu tiên.Chuyển đổi PDF sang hình ảnh thu nhỏ trong Java
Cảm ơn.
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"));
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