如何使用POI从* .docx中获取所有更改的图片?

时间:2014-03-24 19:26:17

标签: java image apache-poi docx xwpf

让我们回顾一下" docx"之间的关系。和"图片":

据我了解,*.docx存储了原始图片(将图片复制/粘贴到Word中时的图片)。每次使用该图片时,Word都会生成一个"链接"到原始图片。

但如果您对该图片进行了一些更改(例如调整大小,裁剪或更改颜色)Word会记住您的更改,修改"链接" (添加一些特殊标签)。这太棒了,因为你永远不会失去你的画面质量!

让我们从* .docx文件中获取图片。为此,我使用此代码段:

XWPFDocument wordDoc = new XWPFDocument( pathToFile );
for (XWPFParagraph p : wordDoc.getParagraphs()) {
    for (XWPFRun run : p.getRuns()) {
        for (XWPFPicture pic : run.getEmbeddedPictures()) {
            byte [] img = pic.getPictureData().getData()

            File  outputfile = new File ( pathToOutputFile );                
            BufferedImage image = ImageIO.read(new ByteArrayInputStream(img));
            ImageIO.write(image , "png", outputfile);
        }
    }
}

但是这样我从* .docx获得了原始图片。例如,如果您从图片中裁剪出一个部分并给我剩下的部分,那么我总是在outputfile中找到整个图像。那不好。

是否有人知道如何通过Word中的某些人对其进行的更改来获取图片?

0 个答案:

没有答案