我目前正在使用ICEPDF渲染PDF文件并将其显示在我的Java Swing应用程序中(在内部框架中)。现在我想在我的Java应用程序中添加裁剪功能。就像,如果我单击一个按钮,我可以拖动所需的PDF部分并将其保存为本地存储中的图像。
有没有一种有效的方法来裁剪PDF并通过java程序保存为图像(.JPG)?
答案 0 :(得分:2)
Ghost4J库(http://ghost4j.sourceforge.net),是您的最佳选择:
3个简单的步骤:
加载PDF文件:
PDFDocument document = new PDFDocument();
document.load(new File("test.pdf"));
创建渲染器:
SimpleRenderer renderer = new SimpleRenderer();
// set resolution (in DPI)
renderer.setResolution(600);
渲染:
List<Image> images = renderer.render(document);
然后你可以用你的图像对象做你想做的事情,例如,你可以像JPG一样把它们写成:
for (int i = 0; i < images.size(); i++) {
ImageIO.write((RenderedImage) images.get(i), "jpg", new File((i + 1) + ".jpg"));
}
Ghost4J使用本机Ghostscript API,因此您需要安装Ghostscript。
编辑:investigating a bit,如果您将PDF转换为图片,那么crop them就不会有太多问题:
BufferedImage 是一个(n)图像,因此您在第二行中执行的隐式转换可以直接编译。如果你知道一个Image真的是一个BufferedImage,你就必须这样明确地转换它:
Image image = ImageIO.read(new File(file));
BufferedImage buffered = (BufferedImage) image;
然后您可以使用BufferedImage::getSubimage
方法裁剪它:
private BufferedImage cropImage(BufferedImage src, Rectangle rect) {
BufferedImage dest = src.getSubimage(rect.x, rect.y, rect.width, rect.height);
return dest;
}