让Flying saucer支持font定义

Posted 秀泉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了让Flying saucer支持font定义相关的知识,希望对你有一定的参考价值。

在wangEditor里给某段字体加上颜色后,在生成的PDF里无法体现出来,只好打开flying saucer的源码debug,发现XhtmlNamespaceHandler类中没有对font元素的处理,于是依样画瓢:


public String getNonCssStyling(Element e) {

    if (e.getNodeName().equals("table")) {

        return applyTableStyles(e);            

    } else if (e.getNodeName().equals("td") || e.getNodeName().equals("th")) {

        return applyTableCellStyles(e);

    } else if (e.getNodeName().equals("tr")) {

        return applyTableRowStyles(e);

    } else if (e.getNodeName().equals("img")) {

        return applyImgStyles(e);

    } else if (e.getNodeName().equals("p") || e.getNodeName().equals("div")) {

        return applyBlockAlign(e);

    }else if(e.getNodeName().equalsIgnoreCase("font")){

        return applyFontStyle(e);

    }

    return "";

}


然后加上下面的方法:


private String applyFontStyle(Element e) {

        StringBuffer style = new StringBuffer();

        String s;

        s = getAttribute(e, "color");

        if (s != null) {

            s = s.toLowerCase().trim();

            style.append("color: ");

            style.append(s);

            style.append(";");

        }

        s = getAttribute(e, "size");

        if (s != null) {

            s = s.toLowerCase().trim();

            if(!s.endsWith("px")){

                s = s + "px";

            }

            style.append("font-size: ");

            style.append(s);

            style.append(";");

        }

        return style.toString();

    }


以上是关于让Flying saucer支持font定义的主要内容,如果未能解决你的问题,请参考以下文章

flying saucer 修改报表格式

Java使用Flying Saucer实现HTML代码生成PDF文档

【又中又英】Flying Saucers

英语里 现在分词做定语flying saucer(飞碟现在分词做定语此处不是正在) running

使用Flying Saucer在PDF标题后的巨大空白区域

使用Flying Saucer,如何在页脚的每个页面上生成包含页码和页面总数的pdf?