文档章节

itextpdf html转pdf 中文字体问题

a
 ayearlater
发布于 2017/03/28 18:08
字数 197
阅读 168
收藏 0
public abstract class BasePdf {
	
	public static class MyFontsProvider extends XMLWorkerFontProvider {
        public MyFontsProvider() {
            super(null, null);
        }

        @Override
        public Font getFont(final String fontname, String encoding, float size, final int style) {

            String fntname = fontname;
            if (fntname == null) {
                fntname = "宋体";
            }
            //网上一般没有这段代码,导致系统没有宋体的情况中文不显示,要把宋体文件放到资源文件里
            registerFamily("宋体","宋体","/simsun.ttf");
            return super.getFont(fntname, encoding, size, style);
        }
    }
	
	public static ElementList parseToElementList(String html, String css) throws IOException {
        // CSS
        CSSResolver cssResolver = new StyleAttrCSSResolver();
        if (css != null) {
            CssFile cssFile = XMLWorkerHelper.getCSS(new ByteArrayInputStream(css.getBytes()));
            cssResolver.addCss(cssFile);
        }

        // HTML
        MyFontsProvider fontProvider = new MyFontsProvider();
        CssAppliers cssAppliers = new CssAppliersImpl(fontProvider);
        HtmlPipelineContext htmlContext = new HtmlPipelineContext(cssAppliers);
        htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());
        htmlContext.autoBookmark(false);

        // Pipelines
        ElementList elements = new ElementList();
        ElementHandlerPipeline end = new ElementHandlerPipeline(elements, null);
        HtmlPipeline htmlPipeline = new HtmlPipeline(htmlContext, end);
        CssResolverPipeline cssPipeline = new CssResolverPipeline(cssResolver, htmlPipeline);

        // XML Worker
        XMLWorker worker = new XMLWorker(cssPipeline, true);
        XMLParser p = new XMLParser(worker);
        html = html.replace("<br>", "").replace("<hr>", "").replace("<img>", "").replace("<param>", "")
                .replace("<link>", "");
        p.parse(new ByteArrayInputStream(html.getBytes()));

        return elements;
    }

}

 

© 著作权归作者所有

上一篇: lambda表达式实例
下一篇: poi 数据类型问题
a
粉丝 0
博文 64
码字总数 1319
作品 0
西城
私信 提问
使用flying-saucer 实现 html转pdf实现input框select,textarea checkbox等的显示

昨天研究html转pdf,使用itextpdf 5.5.9版本(上一篇博客:https://my.oschina.net/u/1778261/blog/809757) 中文显示问题解决了,当时碰到了打印表单中input框等不显示的问题。 今天换了个方...

骑着乌龟赛跑
2016/12/22
293
0
itextpdf 实现html转pdf中中文及图片base64的解决方法

itextpdf 实现html转pdf中中文及图片base64的解决方法: 1. 中文解决方案: 实现FontProvider接口: 2. 图片base64的dataurl显示问题解决: 实现com.itextpdf.tool.xml.html.Image类 3. 转换方法...

骑着乌龟赛跑
2016/12/21
141
0
李星/doc-render

项目主页:http://git.oschina.net/lemonzone2010/doc-render 最近公司需要生成PDF,基于这个需求简单学习了下IText 和 flying saucer,对于这两个技术.我先简单介绍下: Flying Saucer和iText介...

李星
2015/07/04
0
0
使用xmlworker通过html生成pdf

[xmlworker][1]是一个基于[iText][2]的xml生成pdf工具。使用xmlworker是非常简单的,思路也很清晰。获取模板->拼装模板->生成pdf。但是在过程中还是有一些小问题需要注意下。 首先中文的问题...

bfleeee
2014/05/14
0
0
iText PDF中文扩展解决方案

iText自带是不支持中文的,需要引入第三方中文包itext-asian才行,但是在itext-asian中可使用的中文也只有宋体,显示太low,表现形式太差,不能接收。 现通过引入TTF字体文件形式的方式在项目...

醉公子
2016/09/26
130
0

没有更多内容

加载失败,请刷新页面

加载更多

etcd 在超大规模数据场景下的性能优化

作者 | 阿里云智能事业部高级开发工程师 陈星宇(宇慕) 概述 etcd是一个开源的分布式的kv存储系统, 最近刚被cncf列为沙箱孵化项目。etcd的应用场景很广,很多地方都用到了它,例如kubernete...

zhaowei121
18分钟前
2
0
MYSQL主从介绍

MYSQL软件概念 MYSQL是一款数据库,关系型数据库系统; MYSQL主要用于存放:员工姓名、身份证ID、商城订单及金额、销售业绩及报告,学生考试成绩、网站帖子、论坛用户信息等; MYSQL在WEB架构...

寰宇01
21分钟前
1
0
org.apache.cxf.interceptor.Fault: null

出现这个异常的原因:json字符串为null 所以会出现这个错误。需要加上条件判断。 如果不是这个原因,可以参考: https://blog.csdn.net/rshw123456/article/details/8001677...

嘿嘿嘿IT
21分钟前
1
0
gradle控制so库的输出位置

gradle.taskGraph.beforeTask { task -> String abi = "lib/armeabi/" def TASK_NAME = "transformNativeLibsWithStripDebugSymbolFor" String buildType = "debug" //S......

Gemini-Lin
21分钟前
2
0
AndroidL 开机展示Keyguard锁屏机制初探

目录 目录 锁屏时序图 开机启动到PhoneWindowManager的systemReady方法 锁屏加载流程 PhoneWindowManager KeyguardServiceDelegate KeyguardServiceWrapper KeyguardService KeyguardViewMe......

天王盖地虎626
25分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部