java补全html单标签

本文介绍了一种解决富文本编辑器产生的未闭合HTML标签问题的方法,特别是针对KindEditor生成的<br>标签,通过补全单标签确保了使用iText将HTML转换为PDF时的稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      最近做的项目需要用到富文本编辑器,然后我就加了个kindEditor,这个页面填写的内容又要导出pdf, 然后就用了支持样式较多的itext ,在ftl模板转pdf的时候出现了问题,因为itext转pdf对html要求相当严格,只要标签有没闭合的后台必然会直接报错,找到问题发现是在编辑器里面输入内容后按回车或者复制进来的内容有换行的br标签全部都没闭合,比如自己按回车就会生成<p><br></p>的标签,中间的br不会闭合,网上找了很多kindEitor的解决方法,像过滤br标签、更换换行标签之类的,试过了,解决不了问题,然后百度搜索补全标签的方法,发现搜到的都是双标签的补全方法,所以自己写了个补全单标签的方法,希望对那些碰到同样问题的人有帮助,itext支持多个中文字体,中文换行的问题我也都解决了,写起来比较麻烦,下面就只贴标签补全的代码了

public String closeHTML(String str){
    List arrTags = new ArrayList();
    arrTags.add("br");
    arrTags.add("hr");
    for(int i=0;i<arrTags.size();i++){
        for(int j=0;j<str.length();){
            int tagStart = str.indexOf("<"+arrTags.get(i),j);
            if(tagStart>=0){
                int tagEnd = str.indexOf(">",tagStart);
                j = tagEnd;
                String preCloseTag = str.substring(tagEnd-1,tagEnd);
                if(!"/".equals(preCloseTag)){
                    String preStr = str.substring(0,tagEnd);
                    String afterStr = str.substring(tagEnd);
                    str = preStr + "/" + afterStr;
                }
            }else{
                break;
            }
        }
    }
    return str;
}
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值