原文地址:http://www.micmiu.com/opensource/expdoc/itext-xml-worker-cn/

目录:

  1. 介绍
  2. 中文字符转换
  3. 转换效果

[一]、介绍

XML Worker是辅助iText用于把XML、XHTML转换PDF的一个开源的软件工具库,详细介绍可以参见下面的链接:

[二]、中文字符问题

如果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页面、修改源码前 、修改源码后的效果对比图如下:

iText XML Worker修改源码完美支持HTML中文字符转PDF

从上图可知,修改源码后,基本实现了对HTML的中文字符的支持。

本文介绍到此结束@Michael Sun.

相关文章:

  • 2022-01-31
  • 2021-12-09
  • 2021-08-07
  • 2021-08-01
  • 2021-09-13
  • 2022-12-23
  • 2021-12-28
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-25
  • 2022-12-23
  • 2021-05-19
  • 2021-12-04
  • 2021-12-05
相关资源
相似解决方案