Aspose.pdf 如何裁剪PDF的多个区域为一个个图片?

我想要指定一些坐标区域,然后将这些区域裁剪为BufferedImage,然后在另一个PDF文件中的指定位置进行替换,我要怎么实现这个功能?

  1. 将PDF中的多个指定区域裁剪为BufferedImage;
  2. 使用BufferedImage替换PDF中的图片;

@pizhai2

要裁剪PDF中的多个指定区域为BufferedImage,并将这些图像替换到另一个PDF文件中的指定位置,您可以按照以下步骤进行操作:

  1. 裁剪PDF区域为BufferedImage
    使用ImagePlacementAbsorber类来提取PDF页面上的图像。您可以通过指定坐标区域来获取所需的图像。以下是一个示例代码片段:

    Document pdfDocument = new Document("input.pdf");
    ImagePlacementAbsorber absorber = new ImagePlacementAbsorber();
    pdfDocument.getPages().get_Item(1).accept(absorber);
    
    for (ImagePlacement imagePlacement : absorber.getImagePlacements()) {
        // 获取图像并裁剪
        BufferedImage image = (BufferedImage) imagePlacement.getImage().toImage();
        // 这里可以根据需要裁剪图像
    }
    
  2. 使用BufferedImage替换PDF中的图像
    在另一个PDF文件中,您可以使用PdfFileMend类来替换图像。以下是如何将BufferedImage添加到PDF的示例:

    PdfFileMend mender = new PdfFileMend();
    mender.bindPdf("target.pdf");
    
    // 将BufferedImage转换为InputStream
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ImageIO.write(bufferedImage, "png", baos);
    InputStream imageStream = new ByteArrayInputStream(baos.toByteArray());
    
    // 在指定位置添加图像
    mender.addImage(imageStream, pageNumber, x, y, width, height);
    mender.save("updated_target.pdf");
    mender.close();
    

通过以上步骤,您可以实现从PDF中裁剪多个区域并将其替换到另一个PDF文件中的功能。请确保在执行这些操作之前,您已经正确设置了相关的库和依赖项。如果您有任何问题或需要进一步的帮助,请随时告诉我!

1 Like

似乎不正确,你还得练啊小机器人

是否有可以批量替换PDF中图片的方法?

@pizhai2

为了将 PDF 页面中的特定区域转换为图像,请参考我们文档中的以下示例文章。

为了替换PDF中的图像,API目前仅支持以下方法。如果此方法无法满足您的需求,请详细说明您的要求,并与我们分享一个示例PDF。我们将会在问题跟踪系统中记录一个调查工单,并将工单ID与您分享。