【问题标题】:How can I get images from a PDF file?如何从 PDF 文件中获取图像?
【发布时间】:2018-12-11 05:49:41
【问题描述】:

我将一些图像放入 PDF 文件。现在,我想使用 itext7 从 PDF 文件中获取这些图像。如何从 PDF 中获取图片?

【问题讨论】:

  • “我将一些图像放入 PDF 文件。” - 怎么做?您是否将它们添加为文件附件?如果是,是在文档级别还是在页面级别?或者您是否已将它们添加到某些页面内容中?还是一些注释内容?
  • @GaganV 这个答案专门关于使用 pdf 页面作为图像。这似乎不是用户最终想要的。

标签: itext7


【解决方案1】:

我们的想法是使用IEventListener 处理每个页面,并让IEventListener 实现在遇到图像时执行某些操作。

PdfDocument pdfDocument = new PdfDocument(new PdfReader(inputFle));

ImageExtractor imgs = new ImageExtractor();
PdfCanvasProcessor pdfCanvasProcessor = new PdfCanvasProcessor(imgs);
pdfCanvasProcessor.processPageContent(pdfDocument.getPage(1));

pdfDocument.close();

for(BufferedImage bi : imgs.getImages()){
    // TODO : enter your image handling code here 
}

当然,您仍然需要编写 ImageExtractor 来处理传入的页面。

class ImageExtractor implements IEventListener{

    private List<BufferedImage> imgs = new ArrayList<>();

    @Override
    public void eventOccurred(IEventData data, EventType type) {
        if(type != EventType.RENDER_IMAGE)
            return;

        ImageRenderInfo img = (ImageRenderInfo) data;
        try {
            imgs.add(img.getImage().getBufferedImage());
        } catch (IOException e) {}
    }

    public List<BufferedImage> getImages(){ return imgs; }

    @Override
    public Set<EventType> getSupportedEvents() { return null; }

}

【讨论】:

    猜你喜欢
    • 2013-09-05
    • 1970-01-01
    • 2016-04-04
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多