目录

  • 前言
  • PDF文件导出
    • word文件转换pdf文件

前言

前段时间在项目中遇到了导出pdf的问题,之前在项目中遇到导出文件莫不是excle或者word文件的导出,所以在遇到需要导出pdf文件时,我搜索了许多的网页内容,但是很多网页给出的答案也不是正解,走了许多的歪路后才最终实现了pdf文件的导出,下面提供的pdf文件导出希望能帮助到你

PDF文件导出

word文件转换pdf文件

通过使用word转换pdf的方式实现pdf文件的导出,因为项目在需求前是要求导出word文件的,然后客户方要求导出为pdf文件,所以在此基础上我使用的是用word文件转换pdf。

  1. 第一步 :通过freemaker模板导出word文件
  2. 导入doc4j的jar包
    <dependency><groupId>org.docx4j</groupId><artifactId>docx4j</artifactId><version>3.2.1</version>
    </dependency>
    
  3. java代码
        /***  根据ftl模板导出word文件* @param wordPath word文件存放路径* @param pdfPath 导出pdf文件存放路径* */
    public static void exportPdfForDoc4j(String wordPath,String pdfPath){InputStream is = null;OutputStream target=null;try {is=new FileInputStream(new File(wordPath));target=new FileOutputStream(new File(pdfPath));WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(is);//设置字体Mapper fontMapper = new IdentityPlusMapper();/***你的模板中使用了什么字体,需要往项目中放入字体格式文件,*没设置时可能在windows上不会出现问题,但是linux上没有该*字体的话就会使用其默认字体。**/URL fontUrl=ExportPdfUtils.class.getResource("/font/FangSong_GB2312.ttf");PhysicalFonts.addPhysicalFont("FangSong_GB2312",fontUrl);fontMapper.put("仿宋_GB2312",PhysicalFonts.get("FangSong_GB2312"));FOSettings foSettings = Docx4J.createFOSettings();foSettings.setWmlPackage(wordMLPackage);List<SectionWrapper> sections = wordMLPackage.getDocumentModel().getSections();//去掉页脚for (SectionWrapper section : sections) {FooterPart footerPart = section.getHeaderFooterPolicy().getDefaultFooter();if(footerPart!=null){List<Object> content = footerPart.getContent();for (int i = 0; i < content.size(); i++) {footerPart.getContent().remove(i);}}}Docx4J.toFO(foSettings, target, Docx4J.FLAG_EXPORT_PREFER_XSL);} catch (Exception e) {  e.printStackTrace();}finally {try {if(is!=null) is.close();if(target!=null) target.close();}catch (IOException e){  e.printStackTrace(); }}}
    
  4. 以上就是通过word文件转换pdf的过程,但是转换的pdf的格式等可能会出现错乱等问题,所以以下是一些问题的解决

    • 换行问题:首先看到的是身份证号码过长而没有换行行,但是word中格式确实是换行了的,所以我能找到的办法就是数据中强制的换行,值的注意的是换行符一定要拼接上去否则换行符无效:

    • 边框变粗:这个问题也是转换pdf遇到的最大的问题,但是我没有找到具体的解决方案,只能通过加粗整体边框线来使这少许的加粗看起来不明显(加粗后的打印不会有边框变粗的问题),这里你可以通过全局替换w:sz="x"来加粗或变细你的边框,转换比例为:1磅==4,

    • 空格被省略:我们看到年月日中应该出现的样子是如下图展示的一样,但是在pdf转换后年月日位置更换不说,中间的空格也被缩减了;所以在做模板时要使用全角的输入法进行空格的输入,这样在导出pdf时就不会对空格进行缩减。

    • 以上问题解决后导出pdf概览:

docx4j实现word文件转换pdf文件相关推荐

  1. Java 使用wps将word文件转换pdf文件

    public class WordFileToPdf {private static final int wdFormatPDF = 17;private static final int xlTyp ...

  2. dxf转nc代码软件_cad怎么转pdf?cad文件转换pdf文件的方法步骤

    在日常办公中,我们会时不时遇到一些文档格式转换的问题,例如pdf转word,pdf转excel,pdf转图片,pdf转txt等,这些都是比较常见的.如果是做设计师的话,转换的格式又会有所不同,cad文 ...

  3. java 实现 ppt或pptx文件转换PDF文件 -- poi

    前提: 由于ppt和pptx文件格式不同,ppt是基于二进制的文件,而pptx是基于xml文件, 也是就pptx是2007年后出现的新的ppt版本,对这两种文件处理方式转换PDF其实都差不多,只是要注 ...

  4. documents4j 实现Word文档、xlsx、等格式转换PDF文件

    1.documents4j 简介 document4j是一个用来进行文档格式转换的Java工具库,它通过借助本机中支持指定文件格式到目标文件格式转换的应用,来实现整个转换的过程. document4j ...

  5. html文件转换Excel2016文件,万能文件转换工具(word,excel,powerpiont,PDF,TXT,JPG,HTML互转)...

    All Office Converter Platinum v6.1 官方简体中文注册版是一款易于使用和专业的文件转换工具.它可以高质量的支持批量转换文件,网页和图像,以改善工作效率.有了这个强大的转 ...

  6. Python - 批量转换Word文件为PDF文件

    1,目的 通过万能的Python把一个目录下的所有Word文件转换为PDF文件. 2,遍历目录 作者总结了三种遍历目录的方法,分别如下. 2.1,调用glob 遍历指定目录下的所有文件和文件夹,不递归 ...

  7. python批量pdf转word,python批量实现Word文件转换为PDF文件

    本文为大家分享了python批量转换Word文件为PDF文件的具体方法,供大家参考,具体内容如下 1.目的 通过万能的Python把一个目录下的所有Word文件转换为PDF文件. 2.遍历目录 作者总 ...

  8. 将HTML文件转换为PDF文件(Thymeleaf模板转换,简单解决中文问题, 解决HTML带图片转换PDF文件问题)

    将HTML文件转换为PDF文件 一.导入依赖 <!-- itext生成Pdf --> <dependency><groupId>com.itextpdf</g ...

  9. python完成文件夹批量word转pdf文件及pdf文件合并+word文件合并

    前言:有同学问我,如何把文件夹中的文件一次性完成打印,由于文件太多,单个打印着实麻烦.这些文件主要有三种类型,分别为PDF,word(.doc和.docx),我决定把他们全部变为PDF文件,然后再合并 ...

最新文章

  1. java什么叫实例化_在JAVA中实例化的确切含义是什么
  2. 15、子查询注意事项
  3. linux脚本求命令行上整数和,shell脚本--cut命令与awk简单使用
  4. android 获取ListView内部Item高度
  5. VIM使用系列之一——配置VIM下编程和代码阅读环境
  6. 使用 dpu 检视 dump 中的字符串.
  7. Flume1.5.0的安装、部署、简单应用(含伪分布式、与hadoop2.2.0、hbase0.96的案例)
  8. 如何打造一支有超强战斗力的技术团队?
  9. flex states的用法
  10. HDU 3729 I#39;m Telling the Truth(二部图最大匹配+结果输出)
  11. linux安装svn服务器的两种方式(转载)
  12. md文件 markdown打开工具(typora)
  13. MCS-51单片机汇编语言程序设计
  14. Agent Tesla样本分析
  15. JEB配合IDA神器逆向
  16. 如何一次性保存html图片大小,保存网页图片的几种方法(批量)
  17. 使用BasicExcel操作Excel
  18. 网易互娱2017实习生招聘在线笔试(三)
  19. 计算机视觉-OpenCV(七)
  20. win7为什么打开桌面上的计算机很卡很慢,Win7电脑开机速度慢解决方法

热门文章

  1. 内存之旅——如何提升CMA利用率?
  2. 计算机二级office考试通过率为22%,通过率仅22%?计算机二级office到底该不该报
  3. Canvas动画彩色小球下落
  4. HDBaseT传输器100米,150米技术问答
  5. Linux版火狐怎么收藏网页,火狐浏览器怎么同步收藏夹
  6. 关于springcloud使用shiro的权限控制
  7. 数据库系统概论(基础篇)中国人民大学 第二次考试
  8. 2021年实验中学高考成绩查询,绵阳市实验高级中学2021年排名
  9. 牛逼了!90后小哥,只用了5年时间就成为了Python技术大牛
  10. element 中input 或者 select 清空无用