当前位置: 首页 > 知识库问答 >
问题:

如何用java从Microsoft文档中创建预览图像

赖绪
2023-03-14

目前,我正在处理Microsoft文档:Word(doc,docx)、Powerpoint(ppt,pptx)和Excel(xls,xlsx)

我想创建一个预览图像从它的第一页。

只有PowerPoint文档可以由Apache-poi库完成。

在我的文档中,它可能包含具有多个样式、表、图像或对象的文本。word文档第一页的示例图像:

哪个开源java库可以完成这项任务?

我尝试用以下库实现:

String inputWordPath = "C:\\Users\\test\\Desktop\\TestPDF\\Docx.docx";
String outputPDFPath = "C:\\Users\\test\\Desktop\\TestPDF\\OutDocx4j.pdf";
try {
    InputStream is = new FileInputStream(new File(inputWordPath));
    WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(is);
    Mapper fontMapper = new IdentityPlusMapper();
    wordMLPackage.setFontMapper(fontMapper);
    Docx4J.toPDF(wordMLPackage, new FileOutputStream(new File(outputPDFPath)));
} catch (Exception e) {
    e.printStackTrace();
}
String inputWordPath = "C:\\Users\\test\\Desktop\\TestPDF\\Docx.docx";
String outputPDFPath = "C:\\Users\\test\\Desktop\\TestPDF\\OutXDOCReport.pdf";
InputStream is = new FileInputStream(new File(inputWordPath));
XWPFDocument document = new XWPFDocument(is);
PdfOptions options = PdfOptions.create();
OutputStream out = new FileOutputStream(new File(outputPDFPath));
PdfConverter.getInstance().convert(document, out, options);

> 你有什么建议吗?

我可以把文档(docx,doc,xlsx,xls)直接转换成图像吗?

docx4j在转换特性上真的是免费的吗?

共有1个答案

陆博易
2023-03-14

如果您能负担得起LibreOffice(或Apache OpenOffice)的安装费用,JODConverter应该能很好地完成这项工作(而且是免费的)。

请注意,Maven Central Repository中最新版本的JODConverter提供了一个名为Filters的特性,它允许您只轻松地转换第一个页面,并且支持开箱即用的PNG转换。下面是一个快速的示例:

// Create an office manager using the default configuration.
// The default port is 2002. Note that when an office manager
// is installed, it will be the one used by default when
// a converter is created.
final LocalOfficeManager officeManager = LocalOfficeManager.install(); 
try {

    // Start an office process and connect to the started instance (on port 2002).
    officeManager.start();

    final File inputFile = new File("document.docx");
    final File outputFile = new File("document.png");

    // Create a page selector filter in order to
    // convert only the first page.
    final PageSelectorFilter selectorFilter = new PageSelectorFilter(1);

    LocalConverter
      .builder()
      .filterChain(selectorFilter)
      .build()
      .convert(inputFile)
      .to(outputFile)
      .execute();
} finally {
    // Stop the office process
    LocalOfficeUtils.stopQuietly(officeManager);
}

至于你的问题

我不会在这里详细说明,因为你可能会选择另一种方式,但如果你需要进一步的帮助,只要在项目的Gitter社区询问。

 类似资料:
  • 问题内容: 当用户将某些文件(例如.doc,.xls,.pdf等)上传到我的网站时,我希望能够生成(文档第一页的)预览缩略图。我正在使用LAMP堆栈中的PHP,但对可以完成此工作的任何库或命令行工具都感到满意(Linux为首选)。 问题答案: 将某些文档格式转换为图像并不容易。仅靠php不能做到这一点。“正确”的方法是首先在服务器上安装可以打开该格式文件的程序。例如,对于.doc文档,您可以使用O

  • 问题内容: 要将PDF文档的一部分呈现为图像文件,需要哪些库,扩展名等? 我发现的大多数PHP PDF库都以创建PDF文档为中心,但是是否有一种简单的方法可以将文档呈现为适合Web使用的图像格式? 我们的环境是LAMP堆栈。 问题答案: 你需要和 手段。

  • 在进行了一些程序内操作之后,我最终得到了一个包含我要执行的变更日志的xom文档对象。根据我的理解,我必须在ChangeLogParser的帮助下将其转换为liquibase XML格式ParsedNode。但该接口在parse方法中假设一个外部表示形式。使用ResourceAccessor将Document对象注入解析器也是不可能的,因为方法getResourcesAsStream返回一组Inpu

  • 问题内容: 我在应用程序中对函数和我尝试过的包godoc -html以及应用程序和结果创建了简单的注释 为什么我没有看到其他文件?以及为什么包的空格 问题答案: 默认情况下,未记录未导出的标识符。至少设置为查看它们: 可以使用“ m” URL参数来控制godoc服务的网页的显示方式;它接受以逗号分隔的标志名称列表作为值: ones methods show all embedded methods

  • 问题内容: 我看过一些代码源,但是我不明白… 我使用Java 7 请, 如何将RGB (红色,绿色,蓝色) 字节数组 (或类似 格式 ) 转换为.PNG文件格式 ? 可能表示“ RGB像素”的数组中的示例: 重要方面: 我尝试仅从byte []“ 而不是 从以前的现有文件” 生成.PNG文件 现有的API有可能吗?;) 这是我的第一个代码: .... 错误: 找不到合适的方法 这里是 Jeremy

  • 1.手机版 使用方法:找到需要在线预览的文件 -在线预览。 2.电脑版 使用方法:找到需要在线预览的文件 -在线预览。