自己写的用aspose.words将word转pdf过程及一些注意问题

         项目需求要提供合同打印导出功能,打印是前端同学用js做的,我不关心,导出即提供下载功能,开始思路是直接输出流到pdf,老大给了个方案:freemarker和itext结合使用,另一个同事负责开发,基本做出来了,问题是这个方案有严苛的要求,对字体等方面要求,比如宋体不识别,要替换为SimSun,空白占位符不识别等等问题,有些局限。所以我采用了另一种方案,曲线救国,先输出流到doc文档,这里不会产生任何问题,然后将文档转化为pdf。期间都很顺利,最终提测发现对历史数据有不支持的现象,转化为pdf后标签貌似它未识别,原封不动的给打印了出来,而不是以格式的形式进行渲染。第一个想法对比正常转化的新数据和不能正确转化的老数据,同样都是

标签形式,实在未发现任何不妥,后怀疑是一些空格等导致的问题,思路是排查标签带来的影响,后经多次排查未发现异常。转移突破点到生成doc中,突然想到是不是应该加上完整的闭合标签,因为这一现象总结来看是它不识别标签当做正文来转的,所以要强迫它识别,后尝试成功。我所不能理解的是新数据同样的格式确能正常转化,当然加上标签以后也没有影响,也许是这样更规范吧。附两张对比图:

自己写的用aspose.words将word转pdf过程及一些注意问题_第1张图片

                        左侧为转化后pdf效果图,右侧为源码,这是没有>标签情况

自己写的用aspose.words将word转pdf过程及一些注意问题_第2张图片

                           左侧为转化后pdf效果图,右侧为源码,这是有>标签情况

所以初步判定应该是需要有标签情况下能完美支持。路漫漫其修远,继续努力吧。


2019年11月19日 16:22:47
看到自己的博客里,这篇是访问量最高的,想必遇到这样需求的人比较多,其实这个方案并不是最优,当时解决了问题,但是存在另外的问题(之所以要记录下这篇博客,这也是成长的一个足迹,我觉得对我自己很有意义)。后来我个人是抛弃了这个方案,采用python版生成pdf,用的是pdfkit库,效果不错,使用也非常简单。有兴趣可以移步我的另一篇博客https://blog.csdn.net/qq_39314099/article/details/103145261

你可能感兴趣的:(java)