搜索

首页  >  问答  >  正文

java - docx4j生成pdf时,如何指定pdf的页边框

生成pdf:

public String savePdf(WordprocessingMLPackage wordMLPackage,Map<String,Object> data) throws Exception {
    String pdfDir = getFilePath() + ".pdf";
    File file = new File(pdfDir);
    FileUtils.createDir(file);
    //使用默认的FOSettings settings.setWmlPackage(wmlPackage);settings.setApacheFopMime("application/pdf");
    OutputStream os = new java.io.FileOutputStream(file);
    Docx4J.toPDF(wordMLPackage, os);
    
    os.flush();
    os.close();

    if (logger.isDebugEnabled()) {
        logger.debug("savepath:"+file.getAbsolutePath());
    }
    
    return pdfDir;
}

比如说,生成word的时候,可以指定word的上下左右页边距,但是生成pdf时,如何控制页边距,我却没有找到,隐约觉得FOSettings类里会支持,但始终没有找到。
同理,做word转pdf时,也是不知如何控制pdf的页边距。
word转pdf:

public String doc2pdf(String docxPath, String pdfPath) throws Exception{
    OutputStream os = null;  
    try {  
        WordprocessingMLPackage mlPackage = WordprocessingMLPackage.load(new File(docxPath));  
        //设置字体
        Mapper fontMapper = new IdentityPlusMapper(); 
        String fontFamily = "SimSun";
        PhysicalFont simsunFont = PhysicalFonts.get(fontFamily);
        fontMapper.put(fontFamily, simsunFont);
        
        mlPackage.setFontMapper(fontMapper);  

        os = new java.io.FileOutputStream(pdfPath);  
        FOSettings foSettings = Docx4J.createFOSettings();  
        foSettings.setWmlPackage(mlPackage);  
        Docx4J.toFO(foSettings, os, Docx4J.FLAG_EXPORT_PREFER_XSL);  
    }catch(Exception ex){ 
        ex.printStackTrace();  
    }finally {  
        os.close(); 
    }
    return pdfPath;
}

如果有其他的第三方开源插件,jar可以在mvnrepository找到的,麻烦也推荐一下~~当前项目的word有点复杂
萌新刚刚入住社区,求各路大神回复......

怪我咯怪我咯2802 天前822

全部回复(1)我来回复

  • 黄舟

    黄舟2017-04-18 10:22:38

    没有人知道吗 ?....................对docx4j了解的...................还是docx4j对PDF本身就不支持

    回复
    0
  • 取消回复