0

我正在尝试保存从 a 中提取的图像。doc 文件在一个临时文件夹中。我能够创建它的文件夹以及图像被提取但我不知道如何将它们保存在文件夹中。你能帮我吗?

这是迄今为止所做的:

private static void documentImagesCapture(HWPFDocument doc) {
    PicturesTable picturesTable = doc.getPicturesTable();
    List<Picture> allPictures = picturesTable.getAllPictures();
    System.out.println("Number of pictures in the document: "+allPictures.size());

    if (allPictures.size()>0){

        final Path folderPath = Paths.get("src/test/resources/test-documents/");
        final Path tmpDir;

        try {
            // Create tmp folder
            tmpDir = Files.createTempDirectory(folderPath, null);
            System.out.println("This is a temporary folder: " + tmpDir);

            // Extract a Picture file
            for (Picture pic : allPictures){
                System.out.println("this is the picture that I want to save : " + pic);
                //Save pic in tmpDir???????
            }

        } catch (IOException e) {
            System.err.println(">>>>>>>>> ERROR >>>>>>>>> WordDocSplitter.documentImagesCapture()");
            e.printStackTrace();
        }
    }
}

谢谢


谢谢大卫!!!!我是这样解决的:

for (Picture pic : allPictures){
    File newFilePic = new File(pic.suggestFullFileName());
    pic.writeImageContent(new DataOutputStream(new FileOutputStream(newFilePic)));
    FileUtils.copyFileToDirectory(newFilePic, new File(tmpDir.toString()));
    FileUtils.forceDelete(newFilePic);
}
4

1 回答 1

1

对 Picture 对象使用 writeImageContent 方法。文档在这里

写图像内容

public void writeImageContent(java.io.OutputStream out) 抛出 java.io.IOException

将 Picture 的内容字节写入指定的 OutputStream。当需要将图片字节直接写入流时很有用,省略其在内存中作为不同字节数组的表示。参数:out - 要写入的流 抛出:java.io.IOException - 如果在写入指定 out 时发生某些异常

于 2013-05-31T13:32:28.800 回答