原文地址:http://www.micmiu.com/opensource/expdoc/itext-xml-worker-cn/
目录:
- 介绍
- 中文字符转换
- 转换效果
[一]、介绍
XML Worker是辅助iText用于把XML、XHTML转换PDF的一个开源的软件工具库,详细介绍可以参见下面的链接:
- 官网地址:http://sourceforge.net/projects/xmlworker/
- 在线转换的Demo:http://demo.itextsupport.com/xmlworker/
- 在线文档:http://demo.itextsupport.com/xmlworker/itextdoc/index.html
- 在线文档:http://demo.itextsupport.com/xmlworker/itextdoc/flatsite.html
[二]、中文字符问题
如果HTML文件中包含中文字符,在转换成PDF是会无法显示,简单看了下它的源码,发现XML Worker无法设置默认字体,只好修改它的部分源码实现中文字符的转换。
附件提供修改后的lib包下载:xmlworker-1.2.1-micmiu.jar.zip (源码:https://github.com/micmiu/micmiu-xmlworker)
修改:com.itextpdf.tool.xml.css.apply.ChunkCssApplier.java 中的 public Chunk apply(final Chunk c, final Tag t) 这个方法,增加如下逻辑判断:
|
1
2
3
4
5
6
7
8
|
;
// for chinese charater display @www.micmiu.com
{
,
;
}
;
.
|
在:com.itextpdf.tool.xml.html.HTMLUtils.java 中 增加下面用于中文字符判断的方法:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
;
{
{
,
;
{
}
}
// add by Michael more see:http://www.micmiu.com
{
;
CJK_UNIFIED_IDEOGRAPHS
CJK_COMPATIBILITY_IDEOGRAPHS
CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
GENERAL_PUNCTUATION
CJK_SYMBOLS_AND_PUNCTUATION
{
;
}
;
}
// add by Michael more see:http://www.micmiu.com
{
;
{
;
{
;
}
}
;
}
|
[三]、转换效果
演示一个简单的HTML文件:demo-cn.html
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
;
;
;
;
;
;
;
;
;
;
;
;
;
|
转PDF的程序: Demo4HTMLCn.java
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
;
;
;
;
;
;
;
/**
* 测试xml worker 页面包含中文字符的转换
*
*/
{
/**
* @param args
*/
{
;
;
;
,
;
;
;
// html文件
(
;
;
;
}
}
|
HTML页面、修改源码前 、修改源码后的效果对比图如下:
从上图可知,修改源码后,基本实现了对HTML的中文字符的支持。
本文介绍到此结束@Michael Sun.
原创文章,转载请注明: 转载自micmiu – 软件开发+生活点滴[ http://www.micmiu.com/ ]
本文链接地址: http://www.micmiu.com/opensource/expdoc/itext-xml-worker-cn/