`
y_yqing
  • 浏览: 13985 次
  • 来自: ...
社区版块
存档分类
最新评论

iText 导入中文HTML

阅读更多

转载:http://blog.csdn.net/xorong/archive/2007/04/21/1574100.aspx

 

      这是由编码问题引起的。XML标准规定,XML分析器必须支持“UTF-8”和“UTF-16”编码,而且必须能够自动区分这两种编码的文件,对于其他编码(包括常用的中文编码“GB2312”或“BIG5”)并不要求支持。如果XML文件中包含编码声明,分析器则按照声明的编码进行处理,否则就按照识别结果进行处理(识别的结果总是“UTF-8”和“UTF-16”中的一种)。因此,如果XML文件的编码在这两种之外,你必须在XML文件前加上编码声明,如:<?xml version="1.0" encoding="gb2312"?>就表示XML文件的编码是“gb2312”。   

      现有的XML分析器大多不支持中文编码“GB2312”或“BIG5”,因此无法读取包含中文的XML文件。你可以使用支持中文编码的分析器,如MSXML,IBMJAVA4C,IBMJAVA4J等进行XML分析。你也可以用内码转换工具,将编码转换为“UTF-8”或“UTF-16”后进行解析,然后将解析结果转换回原来的编码。

 

1、关于字体的支持

     自己写一个类,覆盖iText自带的htmparser,供自己调用,里面加入了对默认中文字体的支持

import java.io.IOException;
import java.io.InputStream;

import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

import com.lowagie.text.DocListener;
import com.lowagie.text.ExceptionConverter;
import com.lowagie.text.html.HtmlParser;
import com.lowagie.text.html.SAXmyHtmlHandler;
import com.lowagie.text.pdf.BaseFont;

 

public class ITextSurportHtmlParser extends HtmlParser {
    public ITextSurportHtmlParser(){
        super();
    }
   
    public void goGB(DocListener document, InputStream is) {
        try {
            BaseFont bfComic = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

            parser.parse(new InputSource(is), new SAXmyHtmlHandler(document, bfComic));
        }
        catch(Exception e) {
            e.printStackTrace(System.out);
        } 
    }
}


2、参考代码

String htmText = cfo.getOutputText();      
htmText = new String(htmText.getBytes("gb2312"), "ISO8859_1");
StringBufferInputStream sbis = new StringBufferInputStream(htmText);
Document doc = new Document(PageSize.A4, 80, 50, 30, 65);              
PdfWriter.getInstance(doc, res.getOutputStream()); 
ITextSurportHtmlParser p = new ITextSurportHtmlParser();               
p.goGB(doc, sbis);
return null; 

 

关键是将html文件先转换成unicode,然后交给sax解析即可

 

注:适用于 iText_2.1.7 及以下版本,iText 5.0不适用

分享到:
评论

相关推荐

    itext7 html转换为pdf

    在IT行业中,HTML和PDF是两种非常...总的来说,`iText 7`提供了一种强大且灵活的方式来处理HTML到PDF的转换,包括对中文的支持和自定义的文档元素。通过熟练掌握其API和用法,你可以轻松地满足各种复杂的PDF生成需求。

    itext 中文 API 所需要的包

    1. **导入中文字体**:确保你的项目中包含了支持中文的TrueType或OpenType字体文件,如Arial Unicode MS或SimSun。 2. **创建Font对象**:使用`FontFactory.register()`方法注册字体文件,然后通过`FontFactory....

    itext导出pdf不显示中文 ITextRenderer不显示中文

    1. **导入字体资源**:首先,你需要一个支持中文的TrueType Font (TTF) 文件,如Arial Unicode MS、SimSun等。这些字体包含了大量中文字符,适合在PDF中显示中文。 2. **注册字体**:在iText中,你需要注册这个字体...

    itext2.1.5

    1. **iText.CHM**:这是一个帮助文件,通常以CHM(Compiled HTML Help)格式呈现,提供了iText库的API参考和使用指南。用户可以通过查阅此文件了解如何使用iText的各种功能,包括文本添加、图像插入、表格创建、书签...

    iText入门基础教程

    8. **与其他格式转换**:可以从 HTML、XML 等格式导入数据并生成 PDF。 ### 二、搭建 iText 环境 在使用 iText 之前,你需要确保环境准备就绪: 1. **环境准备**:确保你的开发环境中已经安装了 Java 开发工具...

    itext-2.0.3.jar和iTextAsian.jar

    用户可以通过iReport导入必要的JAR包,如itext-2.0.3.jar和iTextAsian.jar,以便在报表设计阶段预览和测试中文显示效果。 5. **中文显示问题**: 在报表制作中,中文字符的正确显示是一个常见挑战,尤其是在跨平台或...

    iText中文帮助文档.doc

    通过这个中文帮助文档,开发者能够掌握使用iText创建专业、结构化的PDF文档所需的所有技术,包括基本的文本和图形处理,到复杂的布局和交互元素。对于需要在Java或.NET环境中生成PDF的应用来说,iText是一个不可或缺...

    itext生成pdf解决中英文换行问题

    导入 &lt;groupId&gt;org.xhtmlrenderer &lt;artifactId&gt;core-renderer &lt;version&gt;R8 直接根目录下新建包org.xhtmlrenderer.layout 覆盖jar

    Itext-pdfa5.0相关jar包.zip

    在实际开发中,导入上述jar包后,开发者可以通过编写Java代码来调用iText提供的API,实现PDF文档的创建和处理。例如,要创建一个简单的PDF文档,可以使用Document对象作为容器,PdfWriter对象负责写入PDF流,...

    java URL转PDF文件(完美支持中文)

    1. **导入itext库**:首先,你需要在项目中引入`itext`库。如果你使用的是Maven,可以在pom.xml文件中添加对应的依赖。 2. **获取URL内容**:使用Java的`java.net.URL`和`java.net.URLConnection`类来打开和读取URL...

    java利用iText生成PDF教程.doc

    一旦完成这个步骤,就可以在代码中直接导入并使用iText的相关类库。 三、创建第一个PDF文档 使用iText生成PDF文档的基本流程如下: 1. 创建`com.lowagie.text.Document`对象实例,表示一个PDF文档: ```java ...

    Word导入导出

    ### Word导入导出技术详解——基于Java与SSH ...此外,通过引入`iTextAsian.jar`库,还可以解决中文显示的问题,使得该技术在中文环境中也能得到广泛应用。希望本文能够帮助您更好地理解和掌握Word文档处理的相关技术。

    html2pdf.zip

    这意味着这个`html2pdf`项目可能是在Eclipse环境中开发的,用户可以导入这些配置快速在Eclipse中启动和构建项目。 `bin`目录通常包含编译后的Java类文件或者可执行文件,是项目的输出目录。在这个项目中,这可能是...

    flying saucer的中文不显示问题(修改源码后重新打的jar包)

    这个库通常与iText一起使用,iText是一个强大的PDF处理库。当我们遇到"Flying Saucer的中文不显示问题"时,这通常是由于字符编码设置不正确或者字体支持不足所导致的。 在默认情况下,Flying Saucer可能不包含对...

    JAVA生成PDF文件(Demo+jar),可加密及设置安全性

    "iText中文文档"是iText库的中文版使用手册,对开发者理解和使用iText功能非常有帮助。通过阅读这份文档,你可以了解如何创建PDF文档,如何添加各种元素,以及如何进行安全设置。 "src"目录包含了项目的源代码,...

    easypoi教程总结

    easypoi是一个Java库,主要用于Excel、Word、HTML、PDF等文档的导出和导入操作。下面是easypoi教程总结的知识点: 第一章 Excel 篇 1. Excel 注解:easypoi提供了多种Excel注解,例如@Excel注解、@ExcelTarget注解...

    jasperreport文档

    * ireport支持中文,需要加入iText-2.1.5.jar和iTextAsian.jar两个jar包到ireport的lib目录下。 三、在web应用中使用jasperreport * 在web应用中使用jasperreport需要导入依赖的包,包括...

    itextsharp.dll

    此外,iTextSharp还支持将PDF转换为HTML、XML等其他格式,或者将这些格式的数据导入到PDF中,极大地扩展了PDF处理的灵活性。 需要注意的是,在使用iTextSharp.dll时,需要确保遵循PDF的标准规范,以保证生成的文档...

    Ireport and JasperReport使用说明.doc

    - 特别注意:如果报表中包含中文,需要确保使用支持中文显示的字体,并考虑下载 iText Asian 语言包来避免中文显示问题。 - **下载地址**: [http://itext.sourceforge.net/downloads/iTextAsian.jar]...

    java开发常用jar包

    itext中关于亚洲编码的类库,在这里用于中文字体的输入。 junit.jar Junit包,当你运行Hibernate自带的测试代码的时候需要,否则就不用。 commons-digester.jar Apache Commons包中的一个,通过它可以很方便的解析...

Global site tag (gtag.js) - Google Analytics