100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > POI 生成word各类问题(设置中文字体 重复图片插入等怪问题......)

POI 生成word各类问题(设置中文字体 重复图片插入等怪问题......)

时间:2019-06-25 16:15:58

相关推荐

POI 生成word各类问题(设置中文字体 重复图片插入等怪问题......)

一、设置字体(中文)

// 创建 段落XWPFParagraph xp = j.addParagraph();// 创建 XWPFRun 对象XWPFRun title = xp.createRun();// 普通设置字体方法title.setFontFamily("仿宋");// ----实测以上方法只是改了ASCII码的字体,并没有什么软用// 以下是研究出来改中文字体的// 新建 字体配置对象CTFonts font = title.getCTR().addNewRPr().addNewRFonts();//中文font.setEastAsia("黑体");// ASCIIfont.setAscii("仿宋"); //上一种方法setFontFamily() 其实只调用了这个方法// 其他字符(有想法可以自己去研究一下是什么字符的):font.setCs("仿宋");font.setHAnsi("楷体");

二、插入重复图片时只获取已存在图id,而无法添加的问题

稍微描述一下这个问题吧,就是要插入一个相同的图片时,会遇到POI去读取原先的这个图片id再获取,而不是去新添加这个图片,导致批量插入图片时出现图片紊乱和错误。

/* 先说明一下这个问题的产生原因* 该问题是由于POI源码中的* XWPFDocument 类的图片添加方法* .addPictureData(byte[] pictureData, int format)* 在处理图片插入时判断已存在图片的方法:* 当重复的图片需要插入时,会直接调用原图id* 而不会再往 pictures 列表里再插入,那列表的长度自然也就不会改变*/解决办法,这里就文字说明一下。1.把你 写入 word的工具类继承 POI 的 XWPFDocument 类,这样在写方法时会比较方便,因为 XWPFDocument 类的很多属性都是 protect 的。2.去看改方法的源码,找到添加图片数据的代码,改写成你想要的逻辑。3.调用你自写的 XWPFDocument 添加图片数据的方法进行添加图片。

之前研究的。。。有时间再记录吧

以上方法是通过研究源码得到,学习中请多研究源码。。。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。