使用 Apache POI 在 java 中获取单词的缩略图

问题描述 投票:0回答:1

我在jsf中研究了一个网络共享项目。在这个项目中,用户可以上传.doc,.pdf,.ppt,..等文档。我想以缩略图的形式显示该文档的第一页。经过一番谷歌搜索后,我发现了 Apache POI。有人可以对我的问题有任何建议吗?如何返回word文档第一页的缩略图?我尝试这个代码。这个代码只是获取word doc包含的第一张图片:

        POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("d:\\test.doc"));
        HWPFDocument doc = new HWPFDocument(fs);
        PicturesTable pt=doc.getPicturesTable();
        List<Picture> p=pt.getAllPictures();
        BufferedImage image=ImageIO.read(new ByteArrayInputStream(p.get(0).getContent()));
        ImageIO.write(image, "JPG", new File("d:\\test.jpg"));
java apache-poi
1个回答
0
投票

你所做的一切毫无意义。 HWPFDocument 可以提取文档中嵌入的缩略图(保存文件时,选中“添加预览”选项)。所以HWPFDocument只能提取有缩略图的文档的缩略图。

甚至,要做到这一点,你必须: {代码}

static byte[] process(File docFile) throws Exception {
    final HWPFDocumentCore wordDocument = AbstractWordUtils.loadDoc(docFile);
    SummaryInformation summaryInformation = wordDocument.getSummaryInformation();
    System.out.println(summaryInformation.getAuthor());
    System.out.println(summaryInformation.getApplicationName() + ":" + summaryInformation.getTitle());
    Thumbnail thumbnail = new Thumbnail(summaryInformation.getThumbnail());
    System.out.println(thumbnail.getClipboardFormat());
    System.out.println(thumbnail.getClipboardFormatTag());
    return thumbnail.getThumbnailAsWMF();
}

{代码} 之后,您可能必须将 WMF 文件格式转换为更常见的格式(jpeg、png...)。 ImageMagick 可以提供帮助。

© www.soinside.com 2019 - 2024. All rights reserved.