由于项目需求要把ckeditor的html可编辑报表到导出成为pdf, 选择用了FlySaucer,结果遇到了中文字体的换行问题,无法正常换行,导致一行内容过长,超出了显示页面,以下为解决方案:
1. 对于让中文能正常的排版,需要在table中的style中加:table-layout:fixed; word-break:break-strict; 这会使内容居中。
2. 这个是重点,需要对 flying-saucer-core-9.0.0.jar 中的Breaker.class进行修改,增加以下内容:
private static boolean isChinese(char c){
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
if(ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|| ub == Chara