我需要在浏览器中输出生成的PDF。这就是我到目前为止所拥有的
public void displayWordAsPDF(InputStream inputStream,HttpServletResponse response) throws Exception {
PhysicalFonts.setRegex(".*(calibri|camb|cour|arial|symb|times|Times|zapf).*");
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(inputStream);
// Set up font mapper (optional)
Mapper fontMapper = new IdentityPlusMapper();
wordMLPackage.setFontMapper(fontMapper);
PhysicalFont font = PhysicalFonts.get("Arial Unicode MS");
// make sure this is in your regex (if any)!!!
if (font != null) {
fontMapper.put("Times New Roman", font);
fontMapper.put("Arial", font);
}
fontMapper.put("Libian SC Regular", PhysicalFonts.get("SimSun"));
Docx4J.toPDF(wordMLPackage, response.getOutputStream());
}
上面的代码将docx文件转换为PDF文件(但文件名仍然是e.g something.docx
,因此文件将在本地下载)。如果我将下载的文件扩展名重命名为.pdf,那么我只能在我的Adobe Reader中打开它。
我的问题是如何在转换过程中指定文件名和扩展名?
答案 0 :(得分:1)
这不是docx4j问题,而是更适合更新HttpServletResponse
对象的问题。这样的事情应该可以胜任:
response.setContentType("application/pdf");
response.setHeader("content-disposition", "attachment; filename=\"something.pdf\"");