有没有一种有效的方法来裁剪PDF并通过java程序保存为图像(.JPG)?

时间:2015-03-27 10:00:39

标签: java image swing pdf jpeg

我目前正在使用ICEPDF渲染PDF文件并将其显示在我的Java Swing应用程序中(在内部框架中)。现在我想在我的Java应用程序中添加裁剪功能。就像,如果我单击一个按钮,我可以拖动所需的PDF部分并将其保存为本地存储中的图像。

有没有一种有效的方法来裁剪PDF并通过java程序保存为图像(.JPG)?

1 个答案:

答案 0 :(得分:2)

Ghost4J库(http://ghost4j.sourceforge.net),是您的最佳选择:

3个简单的步骤:

  1. 加载PDF文件:

    PDFDocument document = new PDFDocument();
    document.load(new File("test.pdf"));
    
  2. 创建渲染器:

    SimpleRenderer renderer = new SimpleRenderer();
    
    // set resolution (in DPI)
    renderer.setResolution(600);
    
  3. 渲染:

    List<Image> images = renderer.render(document);
    
  4. 然后你可以用你的图像对象做你想做的事情,例如,你可以像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; 
    }
    
相关问题