- 浏览: 570646 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (365)
- Tomcat调优 (2)
- Apache Http (20)
- Webserver安装 (5)
- Linux安装 (28)
- Linux常用命令 (17)
- C语言及网络编程 (10)
- 文件系统 (0)
- Lucene (12)
- Hadoop (9)
- FastDFS (8)
- 报表 (0)
- 性能测试 (1)
- JAVA (18)
- CSharp (3)
- C++ (38)
- BI (0)
- 数据挖掘 (0)
- 数据采集 (0)
- 网址收集整理 (3)
- Resin (0)
- JBoss (0)
- nginx (0)
- 数据结构 (1)
- 随记 (5)
- Katta (1)
- Shell (6)
- webservice (0)
- JBPM (2)
- JQuery (6)
- Flex (41)
- SSH (0)
- javascript (7)
- php (13)
- 数据库 (6)
- 搜索引擎排序 (2)
- LVS (3)
- solr (2)
- windows (1)
- mysql (3)
- 营销软件 (1)
- tfs (1)
- memcache (5)
- 分布式搜索 (3)
- 关注的博客 (1)
- Android (2)
- clucene (11)
- 综合 (1)
- c c++ 多线程 (6)
- Linux (1)
- 注册码 (1)
- 文件类型转换 (3)
- Linux 与 asp.net (2)
- perl (5)
- coreseek (1)
- 阅读器 (2)
- SEO (1)
- 励志 (1)
- 在线性能测试工具 (1)
- yii (7)
- 服务器监控 (1)
- 广告 (1)
- 代理服务 (5)
- zookeeper (8)
- 广告联盟 (0)
- 常用软件下载 (1)
- 架设自已的站点心得 (0)
最新评论
-
terry07:
java 7 用这个就可以了 Desktop desktop ...
关于java Runtime.getRunTime.exec(String command)的使用 -
HSINKING:
怎么设置打开的dos 窗口是指定的路径下
关于java调用bat文件,不打开窗口 -
liubang201010:
hyperic hq更多参考资料,请访问:http://www ...
hyperic-hq -
^=^:
STDIN_FILENO是unistd.h中定义的一个numb ...
深入理解dup和dup2的用法 -
antor:
留个记号,学习了
[转]用java流方式判断文件类型
引用
2008年06月05日 星期四 下午 10:29这里说的IText中文处理问题,是指两种生成PDF文档是对中文处理的问题:
第一种是直接通过从数据库查询,或者自己拼接中文字符串生成PDF文档。
第二种是将一个HTML文档转换成PDF文档时的中文处理。
首先说第一种:
这种很简单,我们只需为加上这样一句:
BaseFont bf = BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
在之后的给Document添加节点是为Paragraph设置字体时设置成BF就可以,如下:
document.add(new Paragraph("混沌之神", new Font(bf)));
源码:
/**
* 生成PDF文件解决中文的例子
*
* @throws DocumentException
* @author <b>Innate Solitary</b><br />
* 创建时间:<b>2008-6-4 下午09:47:37</b><br />
* @throws IOException
*/
public static void pdfWriter() throws DocumentException, IOException {
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream("g:\\Hello.pdf"));
BaseFont bf = BaseFont.createFont("STSong-Light,Bold", "UniGB-UCS2-H",
BaseFont.NOT_EMBEDDED);
document.open();
document.add(new Paragraph("混沌之神", new Font(bf)));
document.add(new Paragraph("混沌之神", new Font(bf)));
document.close();
}
第二种有个要求是你给的HTML文档必须XHTML文档,格式必须正确,不正确就会报解析HTML文件错误。
我在解决这个问题的时候在网上看到有人给的解决方法是修改IText中的SAXiTextHandler类的源码,在里面加上一句设置BaseFont的一句话,我测试了这样确实可行,同时也想提出这个解决方法的人致敬,他对IText理解很深入。
我们经理找到一个不用修改源码的解决方法,方法如下:
/**
* 将HTML文档转换成PDF文档的中文处理的例子
*
* @throws Exception
* @author <b>Innate Solitary</b><br />
* 创建时间:<b>2008-6-5 下午09:41:22</b><br />
*/
public static void html2pdf() throws Exception {
String htmlPath = "g:\\test.html";
Document doc = new Document();
BaseFont bf = BaseFont.createFont("STSong-Light,Bold", "UniGB-UCS2-H",
BaseFont.NOT_EMBEDDED);
SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
PdfWriter.getInstance(doc, new FileOutputStream("g:\\test.pdf"));
SAXmyHtmlHandler saxHandler = new SAXmyHtmlHandler(doc, bf);
parser.parse(new File(htmlPath), saxHandler);
}
上面的是源码,我将源码解释一下。
IText之所以会在处理HTML转换PDF是出错,是因为他的内部没有设置中文编码的字体转换,
即没有这三句:
BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
SAXmyHtmlHandler saxHandler = new SAXmyHtmlHandler(doc, bf);
parser.parse(new File(htmlPath), saxHandler);
所以我们只需要将代码改成上面那样,就可以解决中文问题。
这里的SAXParser 是标准的DOM内的SAX解析器,没有测试其他的XML解析器可以处理这里不
第一种是直接通过从数据库查询,或者自己拼接中文字符串生成PDF文档。
第二种是将一个HTML文档转换成PDF文档时的中文处理。
首先说第一种:
这种很简单,我们只需为加上这样一句:
BaseFont bf = BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
在之后的给Document添加节点是为Paragraph设置字体时设置成BF就可以,如下:
document.add(new Paragraph("混沌之神", new Font(bf)));
源码:
/**
* 生成PDF文件解决中文的例子
*
* @throws DocumentException
* @author <b>Innate Solitary</b><br />
* 创建时间:<b>2008-6-4 下午09:47:37</b><br />
* @throws IOException
*/
public static void pdfWriter() throws DocumentException, IOException {
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream("g:\\Hello.pdf"));
BaseFont bf = BaseFont.createFont("STSong-Light,Bold", "UniGB-UCS2-H",
BaseFont.NOT_EMBEDDED);
document.open();
document.add(new Paragraph("混沌之神", new Font(bf)));
document.add(new Paragraph("混沌之神", new Font(bf)));
document.close();
}
第二种有个要求是你给的HTML文档必须XHTML文档,格式必须正确,不正确就会报解析HTML文件错误。
我在解决这个问题的时候在网上看到有人给的解决方法是修改IText中的SAXiTextHandler类的源码,在里面加上一句设置BaseFont的一句话,我测试了这样确实可行,同时也想提出这个解决方法的人致敬,他对IText理解很深入。
我们经理找到一个不用修改源码的解决方法,方法如下:
/**
* 将HTML文档转换成PDF文档的中文处理的例子
*
* @throws Exception
* @author <b>Innate Solitary</b><br />
* 创建时间:<b>2008-6-5 下午09:41:22</b><br />
*/
public static void html2pdf() throws Exception {
String htmlPath = "g:\\test.html";
Document doc = new Document();
BaseFont bf = BaseFont.createFont("STSong-Light,Bold", "UniGB-UCS2-H",
BaseFont.NOT_EMBEDDED);
SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
PdfWriter.getInstance(doc, new FileOutputStream("g:\\test.pdf"));
SAXmyHtmlHandler saxHandler = new SAXmyHtmlHandler(doc, bf);
parser.parse(new File(htmlPath), saxHandler);
}
上面的是源码,我将源码解释一下。
IText之所以会在处理HTML转换PDF是出错,是因为他的内部没有设置中文编码的字体转换,
即没有这三句:
BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
SAXmyHtmlHandler saxHandler = new SAXmyHtmlHandler(doc, bf);
parser.parse(new File(htmlPath), saxHandler);
所以我们只需要将代码改成上面那样,就可以解决中文问题。
这里的SAXParser 是标准的DOM内的SAX解析器,没有测试其他的XML解析器可以处理这里不
发表评论
-
swf文件压缩
2011-12-01 18:29 1310from http://www.9ria.com/news/2 ... -
swf文件的数据结构以及转为exe或从exe中剥离出swf的代码
2011-11-14 22:11 2074swf文件的数据结构以及转为exe或从exe中剥离出swf的源 ... -
swf的详细介绍
2011-11-14 21:17 1181介绍链接一 http://as3.iteye.com/blog ... -
三个重要的处理swf的开源软件
2011-11-14 18:33 1283抓紧时间研究jswiff,swfmill,swfml jsw ... -
FlexBook
2011-05-06 13:12 1514FlexBook from [url ... -
[2011-04] Flex里自定义进度条ProgressBar样式皮肤
2011-04-20 15:47 25752011-01-29 11:08trackbar是整个的条 ... -
[2011-04] flex弹出模式窗口
2011-04-19 17:25 15811、创建一个component,继承自 TitleWindow ... -
[2011-04] Flex调用C# Webservice
2011-04-19 14:19 1115关键字: flex数据交互 终于试出flex用WebSer ... -
[2011-04-19]Flex程序实现背景贴图的两种方式
2011-04-19 10:33 1238Flex程序实现背景贴图的两种方式 Two ways to i ... -
Flex Component Kit for Flash CS3 安装方法及前提
2011-04-15 10:22 1245from http://kingapex.iteye.com/ ... -
as3 flash web 应用 (6)swfobject的使用:将flash嵌入页面
2011-04-14 10:27 2403from http://hi.baidu.com/yukon_ ... -
pdftk 为偶数页加水印
2011-03-23 17:27 2204引用查看完整版本 : 找 ... -
借助 unoconv 批量转 xls 到 pdf文件
2011-03-23 14:44 3243文章分类:Web前端 因为 ... -
swftools安装
2011-03-09 08:44 1430安装swftools工具时,在windows平台下是很简单的事 ... -
flex3下使用全屏模式
2011-03-03 10:12 941引用flex3下使用全屏模式 MXML: -------- ... -
Flex生成SDK下Local目录下的语言包
2011-02-25 16:44 1609from http://sensaran.wordpress. ... -
swf文件格式解析入门(tag解析)
2011-02-24 15:24 2806收藏 swf文件格式解析入门(tag解析) 2010 ... -
转成swf文件注意事项
2011-02-21 10:23 8451\ 这里同时给大家提供一个建议就是,对于纯位图的资源文 ... -
AS获取SWF文件的宽和高!(实现如下类)
2011-02-17 17:57 1398主页博客相册|个人档案 ... -
解析SWF文件头中的Rect结构
2011-02-15 15:25 1645编辑 文章分类:Flash编程 ...
相关推荐
IText中文处理问题.txtIText中文处理问题.txtIText中文处理问题.txtIText中文处理问题.txt
iText7处理行首行末中文标点符号
NULL 博文链接:https://362217990.iteye.com/blog/2294877
NULL 博文链接:https://quicker.iteye.com/blog/549876
1、itext将静态html转pdf中文显示及换行问题 2、itext将静态html转pdf 字体问题 3、html转pdf 参考我的另外一篇博文https://blog.csdn.net/qq_38616723/article/details/125188407?spm=1001.2014.3001.5502
将文件对未解压的jar中想要替换的文件位置进行覆盖
生成PDF报表的Java组件,包含处理中文的问题
itext-asian-5.2.0及itextpdf-5.5.13.1两个jar包用于处理PDF文件
IText5.4 extrajars-2.3 (IText中文处理) xmlworker-5.4.4 官方包
jar包中的 core-renderer-all.jar 为其他大牛重写的,解决了中文字体和换行的问题。 Html格式要求很严格,注意检查。(ht.html为实际使用的合同内容,亲测效果一致) 注意:没有处理图片、表格等内容。
itextpdf-5.5.10.jar、itext-asian-5.2.0.jar、iText中文帮助、iText英文帮助文档 以及生成PDF文件时生成表格时单元格合并处理方法
为了处理此场景,需要对jasperreport源码和pdf的源码进行修改,复刻word的中文版式的样子。 解决问题如下: 1、部分不能出现在行首的中文自动归于上一行,部分不能出现在结尾的中文自动归于下一行 2、单行结尾遇到...
downpour老大在它那篇文章里提到了怎样处理中文字体的,他可能高估了许多人的水平。其实说起来,很简单,就两点:一是在java代码里引用字体,二是在页面上引用字体
如何解决java html转pdf图片不显示问题的源码范例(由浅入深代码范例和详细说明)
jasperreport iText-5.0.6.jar iTextAsian.jar iTextAsianCmaps.jar,中文处理的3个包
GIMP是一个非常强大的图像照片处理软件,是完全开源免费的。 本书内容来源于互联网(kangjs.cublog.cn),由LinuxEye加工整理成书发布,以28个详细的图解实例来讲述GIMP的基本操作。主要包括以下内容: · 一.二.凹凸...
java 写的转pdf代码,支持表格内容的中文换行,css样式随意设置。源代码亲测好用
P java html导出pdf的文章有很多大多都使用的是itext,其实用过的都知道itext有时并不能满足我们的需求,不能兼容html的样式,而且从html页面导出的图片到pdf中也并不好处理。Flying Sauser实现html2pdf,纠错能力差...
包括中文字符处理,直接是个工程包,可以直接用, 主要用到的包 *需要引入的包(附件中都在) *poi-3.6-20091214.jar *poi-contrib-3.6-20091214.jar *poi-examples-3.6-20091214.jar *poi-ooxml-3.6-20091214....