- 浏览: 89349 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
kuge6688:
我的中文还不显示啊。。。。。。。。。。。。。。。求
Itext中文处理pdf(转) -
xmllong:
奇怪,第一个代码例子就不行,只输出start ok,中间的中文 ...
Itext中文处理pdf(转) -
byandby:
Class类有一个forName()静态方法,可以根据传入的类 ...
Java中的Class对象 -
xiaoyuqi00:
c:/aoke_temp/userInfo2009070710 ...
用jspsmartupload下载文件 -
wsbwindy:
good
怎样用JspSmartUpload实现文件上传攻略
http://quicker.iteye.com/blog/549876
Itext中文处理:
在Itext中的中文处理随着Itext的版本变化,采取的方法也在变化。
首先我来演示一下利用Itext-2.1.3.jar与iTextAsian.jar两个包来解决中文问题。
附件中有所需要的包:
示例代码:
- <SPAN style="FONT-SIZE: small">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();
- }
- }
- }
- </SPAN>
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运行下面程序:
- <SPAN style="FONT-SIZE: small">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();
- }
- }
- }
- </SPAN>
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();
}
}
}
会报以下错误:
- <SPAN style="FONT-SIZE: small">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)
- </SPAN>
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");
- }
- }
/* * 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的文件.内容在附件里.
- iText-2.1.3.jar (1 MB)
- 下载次数: 117
- iText.jar (1 MB)
- 下载次数: 115
- iTextAsian.jar (324 KB)
- 下载次数: 160
- 更改.rar (309.7 KB)
- 下载次数: 195
- iText中文文档.rar (103.5 KB)
- 下载次数: 208
评论
发表评论
-
JfreeChart学习总结
2008-09-10 17:35 1061JfreeChart学习总结 关键 ... -
Tomcat 5/6 utf-8 编码下完美解决(post/get)中文表单问题的过滤器
2008-05-30 00:40 68761.过滤器 (包含get与post方式)SetCharacte ... -
:Java的AJAX请求中文编码方法
2008-05-29 21:41 3248这里的方案是页面(page)是基于GBK(gb2312) 的编 ... -
Tomcat 5/6 GBK 编码下完美解决中文表单问题的过滤器
2008-05-29 21:40 1825常 见的 Tomcat 5 表单编码提交后乱码的 ... -
对象的初始化
2008-05-27 09:39 1106调用构造器的具体处理步骤: 1.所有数据域被初始化为默认值(0 ... -
简单的FTP客户端 sun.net.ftp.FtpClient
2008-01-04 23:15 3115某些数据交换,我们需要通过ftp来完成。sun.net.ftp ... -
sun.net.ftp.FtpClient的函数说明
2008-01-04 23:14 1331sun.net.ftp.FtpClient., ... -
java实现的ftp文件上传例题
2008-01-04 23:13 2506前几天写过一编"关于java的http协议文件上传实 ... -
用smartUpload传文件的同时,传递参数的注意事项
2008-01-04 23:12 2109用smartUpload传文件的同时,传递参数时,在获取参数时 ... -
jsp下载文件的问题
2008-01-04 23:10 1337程序如下: <%@page language ... -
怎样用JspSmartUpload实现文件上传攻略
2008-01-04 23:08 2391㈠ 表单要求 对于上传文件的FORM表单,有两个 ... -
用jspsmartupload下载文件
2008-01-04 23:06 8305一般无论网站还是其他系统都会用到文件的上传和下载, ... -
从追MM谈Java的23种设计模式
2008-01-04 23:05 896设计模式做为程序员的& ... -
java操作Excel、PDF文件
2008-01-04 23:03 1652下面这些是在开发中用到的一些东西,有的代码贴的不是完整的,只是 ... -
Java中的内部类
2008-01-04 22:59 1034从Java1.1开始引入了内部类以来,它就引起了人们的激烈争论 ... -
用servlet filter 解决编码问题的一个小例子
2008-01-04 22:58 1642当在做程序的是你也许会遇到一些很让你恼火的乱码问题,就是在你在 ... -
JSTL标签的使用
2008-01-04 22:57 37041. <c:out>标签的用法 ... -
用java实现简单的email正则表达式判断
2008-01-04 22:56 1555import java.sql.*; import java. ... -
eclipse内存不足解决方法
2008-01-04 22:55 2100问题解决]用ECLIPSE3.2+MYECLIPS ... -
如何编写一个简单的Servlet
2008-01-04 22:54 19461.写一个Servlet的java源文件2.编译Servlet ...
相关推荐
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
此外,标签中的"xpdf"通常指的是XPDF工具集,它是一个命令行工具,用于处理PDF文档。虽然本示例未直接使用XPDF,但在某些场景下,如服务器环境,你可能需要结合XPDF或其他命令行工具来完成更复杂的PDF操作。 总之,...
iTextPDF是一个Java库,专门用于创建、编辑和处理PDF文档,而`iText-asian-5.2.0.jar`和`itextpdf-5.5.5.jar`是iText库的不同版本,用于支持中文字符和其他亚洲语言。 1. **iTextPDF**: iTextPDF是iText项目的一...
这个中文帮助文档提供了详细的指导,帮助开发者理解和使用iText来创建包含丰富内容的PDF文件。以下是对iText库和文档中涉及的关键知识点的详细解释: 1. **iText基本概念**: - **PDF(Portable Document Format)...
IText5实现Html转PDF(不含图片、表格) 含:字体文件、hmtl文件、jar包、Java代码 安装字体或将字体文件放到相应的目录下。 jar包中的 core-renderer-all.jar 为其他大牛重写的,解决了中文字体和换行的问题。 Html...
在描述中提到的“iText可以制作中文PDF文件的JAVA源程序”,意味着这个压缩包可能包含示例代码或教程,展示了如何使用iText库在Java程序中创建包含中文字符的PDF文档。通常,处理中文字符需要正确配置字体资源,并...
这个中文帮助文档提供了关于如何使用iTextPDF库在Java项目中处理PDF的详细指南,适合对PDF操作有一定需求的开发者。iTextPDF不仅支持创建新的PDF文档,还能在现有文档上进行编辑,如添加文本、图像、表格、链接等,...
iText生成pdf解决中文不显示字库,pdf凉字不显示,由于生成iText插件生成pdf的时候中文会显示不出来,遇到过的是"凉"字,查到是字体库的原因,网上下载字体库msyh.ttc,生成的时候指定字体库,就可以解决了,小bug一...
`iText`是一个强大的Java库,用于处理PDF文档,它的最新版本`iText 7`增加了对HTML到PDF转换的支持。本文将详细介绍如何利用`iText 7`在Windows系统上进行此操作,并讨论其关键特性,如中文支持、页眉和页脚的添加。...
这个库使得开发者能够轻松地在应用程序中创建、修改和处理PDF文档,包括添加文本、图像、表格、链接等元素。在标题中提到的“iTextpdf支持中文”,意味着该库不仅具备基本的PDF处理功能,还特别优化了对中文字符的...
iText7处理行首行末中文标点符号
在使用iText时,首先需要引入相应的库文件,如压缩包中的`itextpdf-5.5.1.jar`,这是iText的主要库,包含了处理PDF文档的核心功能。如果需要处理中文字符或者亚洲语言,还需要引入`itext-asian-5.1.0.jar.zip`解压后...
iText是一个强大的Java库,能够帮助开发者实现这样的转换,并且支持包含中文字符和图像的处理。本篇文章将详细介绍如何利用iText将HTML转换为PDF,并介绍所需的jar包以及相关知识点。 首先,我们需要准备两个关键的...
iText是一个著名的Java库,专门用于处理PDF文档,而其5.4.2版本引入了对HTML到PDF转换的支持,特别强调了对中文字符的完美呈现,解决了以往许多转换工具在处理中文时出现的问题。 首先,我们来了解iText 5.4.2的...
iText是一个流行的Java库,用于创建和处理PDF文档。然而,由于版权和字符集的问题,原版的iText库在默认情况下可能无法正确地显示中文字符。这篇内容将深入探讨如何在Android环境中使用iText库生成包含中文的PDF文档...
本教程将深入探讨如何在Java中使用iText PDF插件处理中文字符,以及如何引入中文字体文件,创建不同大小和风格的中文字体。 首先,让我们理解`iText PDF`。iText是一个开源的Java库,它提供了一系列API用于构建PDF...
然而,当处理中文字符时,Itext可能会出现不显示或者显示乱码的问题。这个问题主要是由于PDF编码格式与Java字符串编码不匹配导致的。下面将详细介绍如何解决Java中Itext PDF中文不显示的问题。 首先,我们需要理解...
总的来说,这个资源包为开发者提供了一整套处理PDF的工具,无论是生成新文档、编辑现有文档,还是处理亚洲语言,甚至是复杂的水印操作,都能得到有效的支持。通过学习和使用这些代码和库,开发者可以提升其在PDF领域...
"itext-2.1.7源码包以及 解决iText生成pdf时中文标点存在行首问题的修改class" 这个标题提到了两个关键点。首先,`itext-2.1.7`是开源Java库iText的一个版本,用于创建、修改和操作PDF文档。这个版本的源码包提供了...
总之,处理Itext生成PDF时的中文换行问题,关键在于正确设置字体、编码和布局策略。如果遇到困难,不妨尝试更新库或使用其他替代方案。同时,保持对PDF生成技术的深入理解和实践,是提高PDF文档质量的关键。