- 浏览: 1239386 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (718)
- HTML (13)
- JS基础 (23)
- JS应用 (40)
- AJAX (6)
- JSP相关 (12)
- JAVA基础 (52)
- JAVA应用 (74)
- APPLET (11)
- SWING\RCP (2)
- JAVA反射 (6)
- 设计模式 (26)
- 数据库设计 (20)
- Struts (35)
- Struts2 (12)
- Spring (22)
- Hibernate (45)
- Ibatis (18)
- mybatis (3)
- SSH (8)
- UML (5)
- WebService (3)
- XML (16)
- Log4j (7)
- WEB容器 (26)
- 数据结构 (36)
- Linux (34)
- Ruby on Rails (1)
- 其它技术 (27)
- IDE配置 (15)
- 项目实战 (2)
- Oracle (69)
- JAVA报表 (7)
- Android学习 (2)
- 博客链接 (1)
- 网络基础 (1)
- WEB集群 (1)
- .Net开发 (11)
- PB (4)
- 系统构建 (15)
最新评论
-
jnjeC:
牛逼啊哥们,讲得太好了
Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包 -
九尾狐的yi巴:
很好 感谢!
Itext中文处理(更新版) -
luweifeng1983:
有用的,重启一下嘛。
设置eclipse外部修改文件后自动刷新 -
Master-Gao:
设置了也不管用,怎么破呢?
设置eclipse外部修改文件后自动刷新 -
aigo_h:
锋子还有时间写博客,还是很闲哈!
Add directory entries问题
Itext中文处理:
在Itext中的中文处理随着Itext的版本变化,采取的方法也在变化。
首先我来演示一下利用Itext-2.1.3.jar与iTextAsian.jar两个包来解决中文问题。
附件中有所需要的包:
示例代码:
package com.lwf.pdf.test;
import java.awt.Color;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Font;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfWriter;
public class HelloWord {
public static void main(String[] args) {
try {
Document doc = new Document();
PdfWriter.getInstance(doc, new FileOutputStream("c:\\good.pdf"));
doc.open();
BaseFont bfChinese = BaseFont.createFont( "STSongStd-Light" , "UniGB-UCS2-H" , false );
Font fontChinese = new Font(bfChinese , 12 , Font.NORMAL, Color.GREEN);
Paragraph pf = new Paragraph("eee");
pf.add(new Paragraph("我们的家好大的家",fontChinese));
pf.add(new Paragraph("sfsfsf"));
doc.add(pf);
doc.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
上面代码测试环境是:JDK1.4编译环境也为1.4,当然在以后的JDK版本中测试也是没问题的。
好了,现在最新的Itext版本为Itext 5.0,附件中iText.jar即为该版本。以下为Itext5.0的修改:
http://itextpdf.com/history.php
关注两句话:
From now on, the iText.jar is compiled using Java 5 (instead of with the JDK 1.4).
The package names have changed from com.lowagie
to com.itextpdf
.
上面两句话第一说明itext5.0用于JDK1.5以及之后的版本。第二句更改了包名。
好了,如果我现在的程序使用iText.jar+iTextAsian.jar运行下面程序:
package com.lwf.pdf.test;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfWriter;
public class HelloWord {
public static void main(String[] args) {
try {
Document doc = new Document();
PdfWriter.getInstance(doc, new FileOutputStream("c:\\good.pdf"));
doc.open();
BaseFont bfChinese = BaseFont.createFont( "STSongStd-Light" , "UniGB-UCS2-H" , false );
//Font fontChinese = new Font(bfChinese,12,Font.NORMAL,Color.GREEN);
Font fontChinese = new Font(bfChinese , 12 , Font.NORMAL, BaseColor.GREEN);
Paragraph pf = new Paragraph("eee");
pf.add(new Paragraph("我们的家好大的家",fontChinese));
pf.add(new Paragraph("sfsfsf"));
doc.add(pf);
doc.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
会报以下错误:
com.itextpdf.text.DocumentException: No message found for font.1.with.2.is.not.recognized
at com.itextpdf.text.pdf.BaseFont.createFont(Unknown Source)
at com.itextpdf.text.pdf.BaseFont.createFont(Unknown Source)
at com.itextpdf.text.pdf.BaseFont.createFont(Unknown Source)
at com.lwf.pdf.test.HelloWord.main(HelloWord.java:24)
这是为什么呢?
不难发现上面两个测试只是更改了iText包。而iTextAsian.jar只是包含了亚洲国家的文字信息。打开iTextAsian.jar发现它采用了与原来iText-2.1.3.jar一样的包名:com.lowagie.text.Font而现在的iText5.0包名已经改为了com.itextpdf.text.Font,显然我们更一下包名就可以解决问题。在winrar中把对应包名重命名加进来即可。我把改好的jar放在附件的更改.rar中。好了,那么现在使用iText.jar+更改.rar中的iTextAsian.jar测试就不会报错了。
其实这个问题也有文章谈到,如:http://xiaolongfeixiang.iteye.com/blog/577816
我在itext官方网站上,查iTextAsian,发现这样的文章http://www.itextpdf.com/examples/index.php?page=example&id=214
显然,它是一个示例。那么同样使用iText5.0+更改后的iTextAsian包,下面有另一种实现方法:
/* * This class is part of the book "iText in Action - 2nd Edition" * written by Bruno Lowagie (ISBN: 9781935182610) * For more info, go to: http://itextpdf.com/examples/ * This example only works with the AGPL version of iText. */ import java.io.FileOutputStream; import java.io.IOException; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.FontFactory; import com.itextpdf.text.PageSize; import com.itextpdf.text.Paragraph; import com.itextpdf.text.Phrase; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.FontSelector; import com.itextpdf.text.pdf.PdfWriter; /** * This example was written by Bruno Lowagie. It is part of the book 'iText in * Action' by Manning Publications. * ISBN: 1932394796 * http://www.1t3xt.com/docs/book.php * http://www.manning.com/lowagie/ */ public class FontSelectionExample { /** The resulting PDF file. */ public static final String RESULT = "results/part3/chapter11/font_selection.pdf"; /** Some text */ public static final String TEXT = "These are the protagonists in 'Hero', a movie by Zhang Yimou:\n" + "\u7121\u540d (Nameless), \u6b98\u528d (Broken Sword), " + "\u98db\u96ea (Flying Snow), \u5982\u6708 (Moon), " + "\u79e6\u738b (the King), and \u9577\u7a7a (Sky)." + "中华人民共和国万岁劳动人民是光荣的,岁月峥嵘,百舸争流" ; /** * Creates a PDF document. * @param filename the path to the new PDF document * @throws DocumentException * @throws IOException * @throws DocumentException * @throws IOException */ public void createPdf(String filename) throws IOException, DocumentException { // step 1 Document document = new Document(PageSize.A4); // step 2 PdfWriter.getInstance(document, new FileOutputStream(filename)); // step 3: we open the document document.open(); // step 4: FontSelector selector = new FontSelector(); selector.addFont(FontFactory.getFont(FontFactory.TIMES_ROMAN, 12)); // selector.addFont(FontFactory.getFont("MSung-Light", // "UniCNS-UCS2-H", BaseFont.NOT_EMBEDDED)); // selector.addFont(FontFactory.getFont("STSongStd-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED)); Phrase ph = selector.process(TEXT); document.add(new Paragraph(ph)); // step 5: we close the document document.close(); } /** * Main method. * * @param args no arguments needed * @throws DocumentException * @throws IOException */ public static void main(String[] args) throws IOException, DocumentException { new FontSelectionExample().createPdf("c:/good.pdf"); } }
呵呵,我只是把示例代码改了一下,那么在C盘就会生成一个名为good.pdf的文件.内容在附件里.
注:原包iTextAsian.jar的下载路径为:http://itextpdf.sourceforge.net/
- iText-2.1.3.jar (1 MB)
- 下载次数: 497
- iTextAsian.jar (324 KB)
- 下载次数: 756
- iText.jar (1 MB)
- 下载次数: 367
- 更改.rar (309.7 KB)
- 下载次数: 629
- good.pdf (1.7 KB)
- 下载次数: 214
评论
现在我加了那个支持中文的jar 但是英文又显示不正常了,一个连贯的单词中间会有空格
求解答?
使用itext的fontselecter,依次添加默认的英文字体和中文字体,优先用英文字体来解析应该就可以了。
现在我加了那个支持中文的jar 但是英文又显示不正常了,一个连贯的单词中间会有空格
求解答?
现在我加了那个支持中文的jar 但是英文又显示不支持了,一个连贯的单词中间会有空格
求解答?
public static final String RESOURCE_PATH = "com/itextpdf/text/pdf/fonts/";
这个是itext5 中BaseFont 源码上的。把iTextAsian.jar 的包名改成这个就行了。。
发表评论
-
JAVA短信发送及JAVA发送http请求与处理
2016-06-22 14:34 677JAVA发送HTTP请求与处理参考: http://ww ... -
Java Zip应用
2016-06-22 14:30 706应用系统中使用jdk原生 ... -
模拟tomcat进行http请求及响应处理:BufferedReader类的readLine在socket网络编程应用时发生阻塞
2016-05-11 15:04 1847最近写一个简单的程序模拟tomcat进行http请求及响应 ... -
Castor-xml映射出现节点重复问题解决
2015-08-13 16:24 1219最近在使用Castor-xml生成XML时发现生成的格式不 ... -
Add directory entries问题
2014-08-05 10:24 1947用spring注解的项目,eclipse可以运行,打成jar ... -
BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
2013-01-25 16:21 895http://www.cnblogs.com/fayf/ar ... -
java.net.BindException: Cannot assign requested address
2012-06-13 14:10 913转:http://wgkgood.blog.51cto ... -
Duplicate name in Manifest: Depends-On
2012-06-13 13:13 1665解决方法:http://ww2.sjc.edu/faculty ... -
java tree
2011-11-16 02:01 1309import java.util.ArrayList; im ... -
jacob操作word和excel
2011-07-28 17:00 915http://danadler.com/jacob/ -
获得PrepareStatement 的最终执行语句
2011-07-04 10:07 1033方法一:http://www.blogjava.net/ ... -
Non-terminating decimal expansion; no exact representable decimal result
2011-06-24 16:03 2627由于需要处理精度比较高的浮点数,所以弃用double类型,改用 ... -
JXLS应用示例
2011-06-03 01:41 3526JXLS在循环的记录前加序号: <jx:f ... -
月份加减方法处理
2011-06-03 00:52 934private static String monthAdd ... -
JAVA 5.0 后 自带监控工具 jps、jinfo、jstat、jma
2011-05-12 16:25 1253最近有个客户要进行WebLogic性能调优,但因为他们没有性能 ... -
定时器的实现、java定时器介绍与Spring中定时器的配置
2011-04-28 15:05 25631定时器的作用 在实际的开发中,如果项目中需要定时执行或者需 ... -
ClientAbortException,Connection reset by peer: socket write error
2011-03-07 11:24 6126extremetable导出excel,弹出一个下载窗口,这 ... -
java 调ireport (javaBean数据源)保存服务器 生成word
2011-02-24 14:40 1584package com.ztesoft.bidding.con ... -
JAVA包生成EXE应用实例
2011-01-06 15:35 1050相关文章:http://blog.csdn.net/fresh ... -
RMI客户端调用远程服务器方法-远程方法调用
2010-12-27 16:45 2766RMI软件下载:http://www.genady.net/r ...
相关推荐
这个更新对于在中国、台湾、香港以及其他使用中文语言的地区的企业和开发者尤其重要,他们现在可以更加自如地使用iText来生成包含中文字符的PDF文档。 iTextAsian.jar是iText针对亚洲语言,包括中文,特别设计的一...
需要注意的是,随着iText库的更新,新的版本可能会引入更多的特性和优化,因此,根据项目需求和兼容性考虑,选择合适的版本至关重要。同时,使用iText时也需要遵守其开源许可证的要求,确保合法合规使用。
在 iText-2.0.8 版本中,该库已经针对中文字符集进行了优化,能够很好地支持中文显示和处理,这对于需要在 PDF 文件中包含中文内容的开发者来说是一大福音。以下是对 iText 的详细知识点介绍: 1. **iText 基础**:...
2. iTextAsian.jar:这个文件是针对亚洲语言的支持模块,如中文、日文和韩文。由于这些语言的字符集和排版规则与西方语言不同,因此需要特定的库来正确处理这些字符。iTextAsian.jar包含了处理东亚文字所必需的字体...
这个压缩包包含了iText库的官方最新版本,即5.5.8版,以及针对中文支持的扩展包`itext-asian.jar`。这两个组件在Java开发中,特别是在处理PDF文档时,是不可或缺的工具。 **iText PDF库**: iText 是一个功能强大的...
iTextAsian增强了对这些语言的支持,包括正确显示和处理汉字、假名和谚文的能力。它包含了额外的字体资源和排版算法,确保在PDF中能够准确地呈现亚洲文字。 使用这两个库,开发者可以轻松地在Java应用程序中集成PDF...
对于处理中文字符的支持,5.5.3版已经相当成熟,能够很好地处理中文文本的排版和渲染,确保了PDF文档在不同系统和设备上的正确显示。 **中文语音包** 提到的“中文语音包”可能指的是iText库中用于读取和播放PDF...
iTextAsian是一款专门为处理中文字符集而设计的Java库,它是国际知名开源PDF处理库iText的扩展。这个中文包提供了对简体中文、繁体中文以及其它东亚语言(如日语和韩语)的全面支持,使得开发者能够在生成PDF文档时...
5. **更新或替换库**:问题可能源于Itext的版本较旧,无法良好处理中文。可以尝试更新到最新版本,或者使用其他支持中文换行的库,如Apache PDFBox或 Flying Saucer。 在提供的文件列表中,`core-renderer-R8-...
在版本5.2.0之后,iText针对中文字符的支持出现了一些问题,这可能是由于内部字体处理和Unicode编码的改变导致的。为了应对这些挑战,官方提供了一个更新的资源包,其中包含了解决中文显示问题的关键组件。 在资源...
总结起来,IText是一个功能丰富的Java库,用于处理PDF和RTF文档,尤其是`itext-asian-5.2.0.jar`对于亚洲语言的支持,使得在中文环境下的应用更加得心应手。通过学习和掌握IText,开发者可以有效地提高工作效率,...
iText是一款广泛使用的Java库,专门用于创建、编辑和处理PDF文档。这个压缩包包含了两个主要的JAR文件:`itext-asian-5.2.0.jar`和`itextpdf-5.5.13.1.jar`,它们在处理PDF文件时扮演着重要的角色。 `itext-asian-...
4. **iTextAsian.jar**:这个文件是为了支持亚洲语言(如中文、日文和韩文)而特别编译的IText扩展。由于PDF标准对多语种文本的支持复杂,iTextAsian提供了额外的字体和排版功能,确保亚洲字符正确显示。 5. **...
2. **iTextAsian.jar**:这个JAR文件提供了对亚洲语言(如中文、日文、韩文)的支持。在处理这些语言时,iText需要额外的字体和字符映射信息,因为PDF标准的内置字体通常不包含这些字符。知识点包括: - 亚洲字符...
2. **iTextAsian.jar**:这是一个专门为处理亚洲字符集(如简体中文、繁体中文、日文和韩文)设计的扩展库。它包含了处理CJK(Chinese, Japanese, Korean)字体和排版所需的支持,使得在iText生成的PDF文档中可以...
接下来是`itext-asian-5.2.0.jar`,这是一个专门处理亚洲语言(如中文、日文、韩文等)的扩展模块。由于PDF标准对亚洲字符的支持较为复杂,iText通过这个扩展提供更完善的字体和排版支持,确保这些语言在PDF中的正确...
3. **文本排版**:针对东亚文字的特殊排版规则,如中文的全角字符和标点,iTextAsian提供了相应的处理机制。 4. **Unicode兼容**:iTextAsian.jar 确保了与Unicode的兼容性,使得开发者能处理多语言的PDF文档。 综...
iText 是一个流行的Java库,用于创建和修改PDF文档。...然而,需要注意的是,随着技术的发展,更新的版本如iText 5和iText 7可能提供了更多的功能和性能改进,因此在新项目中,考虑使用最新版本的iText会更合适。