最近使用docx4j在做word转pdf,搜了很多前辈的写的文章,收获很多,自己基本上也是按照他们的文章一步一步的做。本文章不讲具体的操作,只是记录一下遇到的问题;
1. 在windows下中文可以转化,在linux中,文档中的中文转换成pdf后都变成“#”,
2. 格式错乱,在表格中,有多行文字时只能展示最后一行的文字;文字间有空格时,文件之间的空隙会很大
解决问题:
问题1,因为linux环境中没有win的字体库(比如:常用宋体),所以需要把win中的字体拿到linux环境中,这里有两种方法,a,把字体库放到linux环境中,相当于在linux中安装初始化一下,b.把需要的字体放在项目的目录下,在项目中引用一下。我使用的是b方案。这个b方案的主要代码(字体打包不需要像链接中那么麻烦,直接找到相应的字体后复制就行):https://blog.csdn.net/FreezetimeLOGO/article/details/119793838?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_ecpm_v1~rank_v31_ecpm-1-119793838.pc_agg_new_rank&utm_term=%E8%A7%A3%E6%B1%BAdocx4j%E5%9C%A8linux%E7%8E%AF%E5%A2%83%E4%B8%8B%E6%97%A0%E4%B8%AD%E6%96%87%E5%AD%97%E4%BD%93%E9%97%AE%E9%A2%98&spm=1000.2123.3001.4430
问题2;原因: 以下代码修改,right 改成left ,把pos = 7435 删除
原:
<w:tabs>
<w:tab w:val=“right” w:pos=“7435”/>
</w:tabs>
修改后:
<w:tabs>
<w:tab w:val=“left” />
</w:tabs>
分析: 这个代码的作用,应该是设置文字靠右显示(空隙变大),pos 作用像前端中元素定位,只能显示在固定位置(展示最后一行的文字)