如何在Docx4J中转换期间指定PDF文件名

时间:2014-10-13 07:39:55

标签: java pdf docx4j

我需要在浏览器中输出生成的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中打开它。

我的问题是如何在转换过程中指定文件名和扩展名?

1 个答案:

答案 0 :(得分:1)

这不是docx4j问题,而是更适合更新HttpServletResponse对象的问题。这样的事情应该可以胜任:

response.setContentType("application/pdf");
response.setHeader("content-disposition", "attachment; filename=\"something.pdf\"");