我在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"));
你所做的一切毫无意义。 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 可以提供帮助。