用FlySaucer遇到的中文字体和换行问题

在项目中使用FlySaucer将ckeditor的HTML报表导出为PDF时,遇到中文字体无法正常换行的问题。解决方案包括在table样式中添加特定规则,并修改flying-saucer-core-9.0.0.jar中的Breaker类,针对中文字符进行长度计算调整,从而实现正确的中文换行和PDF显示。
摘要由CSDN通过智能技术生成

由于项目需求要把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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值