`
zxingchao2005
  • 浏览: 80386 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

导出PDF ITEXT中文乱码处理

 
阅读更多

iText 是利用Java 来操作PDF 操作的一种开源API

简单说明下使用该API创建PDF文件的过程

PS:使用的是iText5.x版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* 创建PDF文件
* @param filePath 文件路径
* @param content 需要写入的内容
* @throws DocumentException
* @throws IOException
*/
publicvoidcreatePdf(String filePath ,String content) throwsDocumentException, IOException{
//1.创建Document对象
Document document = newDocument();
FileOutputStream fos = newFileOutputStream(filePath);
//2.创建一个PdfWriter实例
PdfWriter.getInstance(document, fos);
//3.打开文档
document.open();
Paragraph graph = newParagraph(content);
//4.加入段落
document.add(graph);
//5.关闭文档
document.close();
}

利用上述程序,运行结果。发现,只有英文部分被写入,中文部分无法被写入。百度得到结论:

需要加入itextasian.jar包,itextasian.jar包有实现了对中文字体的支持。因此加载itextasian.jar到classpath下。

在上述代码中加入如下代码:

1
2
3
BaseFont baseFontChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font fontChinese = newFont(baseFontChinese , 12, Font.NORMAL);
Paragraph graph = newParagraph(content , fontChinese);

运行,得到如下异常:

Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized

还是不行,继续研究,在网上前辈们说如下原因:

iText5.x版本以上中的font和encoding文件都是从String RESOURCE_PATH = "com/itextpdf/text/pdf/fonts/"加载的,而老itextasian.jar的包名是com.lowagie.text.pdf.fonts, 包名不一致导致路径错误,。

具体解决方法就是修改包的路径了,详细方法如下:

1.解压iTextAsian.jar
得到如下目录:
iTextAsian
--com
--lowagie
--text
--pdf
--fonts
--...(字体属性文件)
2.将解压后的com目录下的包名lowagie更改为itextpdf
3.在命令行转至iTextAsian目录,重新打包为iTextAsian.jar文件
4.打包命令如下:
jar cvf iTextAsian.jar com/itextpdf/text/pdf/fonts/*
5.执行后,将新的iTextAsian.jar加入classpath路径

运行结果,OK,解决问题。

最终代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* 创建PDF文件
* @param filePath 文件路径
* @param content 需要写入的内容
* @throws DocumentException
* @throws IOException
*/
publicvoidcreatePdf(String filePath ,String content) throwsDocumentException, IOException{
//1.创建Document对象
Document document = newDocument();
FileOutputStream fos = newFileOutputStream(filePath);
//2.创建一个PdfWriter实例
PdfWriter.getInstance(document, fos);
//3.打开文档
document.open();
BaseFont baseFontChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font fontChinese = newFont(baseFontChinese , 12, Font.NORMAL);
Paragraph graph = newParagraph(content , fontChinese);
document.add(graph);
document.close();
}
分享到:
评论

相关推荐

    itextpdf 导出pdf 表格 自动分页中文 目录

    iTextPDF是一个Java库,专门用于创建、编辑和处理PDF文档,而`iText-asian-5.2.0.jar`和`itextpdf-5.5.5.jar`是iText库的不同版本,用于支持中文字符和其他亚洲语言。 1. **iTextPDF**: iTextPDF是iText项目的一...

    Java生成pdf文件,解决中文乱码问题.pdf

    本文将通过一个完整的示例代码,详细讲解如何使用 iText 库生成 PDF 文件,解决中文乱码问题。 1. 使用 iText 库 iText 库是一个流行的 Java 库,用于生成 PDF 文件。它提供了丰富的功能,包括文档结构、字体、...

    Java生成PDF完整示例,解决中文乱码

    本文将详细讲解如何使用Java生成包含中文字符的PDF文档,并解决中文乱码问题,主要涉及的库是iText库及其针对亚洲语言的支持包。 首先,iText是一个开源的Java库,用于创建和修改PDF文档。在这里我们使用的是iText ...

    itext jar包组合-导出word文档案例,解决中文乱码问题

    本文将详细介绍如何使用iText Java库来创建、操作Word文档,并解决中文乱码的问题。 首先,我们需要理解iText库的核心功能。iText是一个开源的Java库,主要用于生成PDF和HTML文档,但通过一些扩展,它也可以用来...

    html转pdfHTML导出PDF中文、ITEXT转HTML为PDF包括中文显示解决方案

    1、解决中文问题 2、附字体 3、动态html拼接转pdf public static void htmlCodeComeString(String linkcss,String htmlCode, String outputFile,String title) throws Exception { OutputStream os = new ...

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

    "iText导出pdf不显示中文 ITextRenderer不显示中文"这个问题,通常是由于字体配置不当或者缺失支持中文的字体资源导致的。下面我们将深入探讨这个问题及其解决方案。 首先,我们需要理解iText的工作原理。iText创建...

    导出PDF (iText实现) PdfDownloadDS

    总结来说,"导出PDF (iText实现) PdfDownloadDS"涉及了使用Java的iText库创建PDF文档,尤其是处理中文内容。通过阅读提供的博客文章和理解源码,开发者可以学习如何有效地利用iText来实现数据导出服务。同时,提供的...

    freemark模板导出PDF

    本篇文章将详细讲解如何利用FreeMarker模板来导出PDF文件。 1. **FreeMarker基本概念** FreeMarker是Java语言的一个模板引擎,它与Spring、Struts等框架结合紧密,允许开发者将逻辑代码与展示层分离,通过模板文件...

    itext导出HTML到PDF的换行和解决中文包(配套三个)

    通过引入`iTextAsian.jar`,iText能够正确渲染中文字符,避免出现乱码或空白字符的情况。你需要确保在创建PDF时指定支持中文的字体,比如SimSun或Arial Unicode MS。 为了正确使用这些库和资源,你需要在Java代码中...

    itextpdf+itext-asian+xmlworker 导出pdf 表格 自动分页中文 目录.rar

    iTextPDF是一个流行的Java库,专门用于创建、编辑和处理PDF文件。此外,为了支持中文字符和其他亚洲语言,iText还提供了iText-Asian扩展。在本案例中,"xmlworker"组件被用来将HTML或XML内容转换为PDF格式,从而实现...

    itextpdf中文依赖包

    描述中提到,作者建议使用`itext-asian-5.2.0`中的字体,因为第一种字体在导出PDF后,英文显示可能不够理想,影响了可读性。这主要涉及到PDF中的字体嵌入问题。PDF文档默认并不包含所有可能用到的字体,因此在处理多...

    java Pdf 导出 中文 解决 iTextAsian.jar

    在Java开发中,PDF文档的生成与处理是一个常见的需求,特别是在需要导出具有中文字符的文档时。iText是一个流行的PDF库,它提供了强大的API来创建、修改和操作PDF文件。然而,对于中文字符的支持,iText的标准版本...

    iText和支持中文的jar包

    总之,iText是一款强大的PDF处理工具,虽然在默认情况下对中文支持有限,但通过引入支持中文的jar包和正确配置,我们可以充分利用iText的功能,生成包含中文的高质量PDF报表。在进行这项工作时,了解和掌握字体管理...

    使用iText生成PDF.doc

    基础的iText.jar提供了基本的PDF生成功能,但如果你需要处理中文、日文或韩文字符,还需下载并引入iTextAsian.jar包。 2. **环境配置**: 在Java项目中,将下载的.jar文件添加到项目的类路径中,以便在代码中引用...

    jasper6.0pdf 导出中文不显示(乱码)问题.doc

    确保将此文件添加到你的项目的类路径中,以便在导出PDF时系统能够识别和使用这些字体。 3. **其他注意事项**: - 除了`itext-asian-5.2.0.jar`,可能还需要其他的JasperReports相关的JAR文件,如`jasperreports-...

    PDF导出需要使用的iText.jar包,全套。

    对于中文字符支持,iText也做了很好的处理,可以有效地避免PDF导出时出现的中文乱码现象。 首先,我们需要将iText.jar库导入到Java项目中。这可以通过将jar文件添加到项目的类路径(classpath)中来完成,或者在...

    iText导出PDF报表

    标题中的“iText导出PDF报表”指的是利用iText库来创建包含各种数据和格式的PDF报告。 首先,我们来详细了解一下iText的核心功能。iText支持从头开始创建PDF文档,包括添加文本、图像、表格、链接等元素。通过它的...

    ireport导出pdf文件中文问题

    总之,处理ireport导出PDF文件中文问题,关键在于正确配置字符编码、引入支持中文的字体资源,并在必要时利用iText的低级API进行干预。随着技术的发展,类似问题会逐渐减少,但理解这些问题的根源对于提升开发技能和...

    ITextPdf表单填充

    在处理包含中文字符的PDF表单时,可能会遇到编码问题,导致中文显示为乱码。解决这个问题的关键在于正确设置字体和编码。iTextPDF支持多种字体和编码,如GBK、UTF-8等。你需要确保PDF文档中使用的字体支持中文字符,...

    itext设置段落行间距.zip

    首先,我们来看如何解决PDF导出中的中文问题。在生成PDF文档时,由于编码和字体的支持问题,中文字符可能会显示为乱码。iText库本身并不直接支持中文字符集,因此我们需要做一些额外的配置。具体步骤包括: 1. 引入...

Global site tag (gtag.js) - Google Analytics