docx4j生成pdf时,如何指定pdf的页边框
高洛峰
高洛峰 2016-11-16 15:04:50
[Java讨论组]

生成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有点复杂萌新刚刚入住社区,求各路大神回复......

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号