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
*/
public void createPdf(String filePath ,String content) throws DocumentException, IOException{
Document document = new Document();
FileOutputStream fos = new FileOutputStream(filePath);
PdfWriter.getInstance(document, fos);
document.open();
Paragraph graph = new Paragraph(content);
document.add(graph);
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 = new Font(baseFontChinese , 12 , Font.NORMAL);
Paragraph graph = new Paragraph(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
*/
public void createPdf(String filePath ,String content) throws DocumentException, IOException{
Document document = new Document();
FileOutputStream fos = new FileOutputStream(filePath);
PdfWriter.getInstance(document, fos);
document.open();
BaseFont baseFontChinese = BaseFont.createFont( "STSong-Light" , "UniGB-UCS2-H" , BaseFont.NOT_EMBEDDED);
Font fontChinese = new Font(baseFontChinese , 12 , Font.NORMAL);
Paragraph graph = new Paragraph(content , fontChinese);
document.add(graph);
document.close();
}
|
分享到:
相关推荐
iTextPDF是一个Java库,专门用于创建、编辑和处理PDF文档,而`iText-asian-5.2.0.jar`和`itextpdf-5.5.5.jar`是iText库的不同版本,用于支持中文字符和其他亚洲语言。 1. **iTextPDF**: iTextPDF是iText项目的一...
本文将通过一个完整的示例代码,详细讲解如何使用 iText 库生成 PDF 文件,解决中文乱码问题。 1. 使用 iText 库 iText 库是一个流行的 Java 库,用于生成 PDF 文件。它提供了丰富的功能,包括文档结构、字体、...
本文将详细讲解如何使用Java生成包含中文字符的PDF文档,并解决中文乱码问题,主要涉及的库是iText库及其针对亚洲语言的支持包。 首先,iText是一个开源的Java库,用于创建和修改PDF文档。在这里我们使用的是iText ...
本文将详细介绍如何使用iText Java库来创建、操作Word文档,并解决中文乱码的问题。 首先,我们需要理解iText库的核心功能。iText是一个开源的Java库,主要用于生成PDF和HTML文档,但通过一些扩展,它也可以用来...
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的工作原理。iText创建...
总结来说,"导出PDF (iText实现) PdfDownloadDS"涉及了使用Java的iText库创建PDF文档,尤其是处理中文内容。通过阅读提供的博客文章和理解源码,开发者可以学习如何有效地利用iText来实现数据导出服务。同时,提供的...
本篇文章将详细讲解如何利用FreeMarker模板来导出PDF文件。 1. **FreeMarker基本概念** FreeMarker是Java语言的一个模板引擎,它与Spring、Struts等框架结合紧密,允许开发者将逻辑代码与展示层分离,通过模板文件...
通过引入`iTextAsian.jar`,iText能够正确渲染中文字符,避免出现乱码或空白字符的情况。你需要确保在创建PDF时指定支持中文的字体,比如SimSun或Arial Unicode MS。 为了正确使用这些库和资源,你需要在Java代码中...
iTextPDF是一个流行的Java库,专门用于创建、编辑和处理PDF文件。此外,为了支持中文字符和其他亚洲语言,iText还提供了iText-Asian扩展。在本案例中,"xmlworker"组件被用来将HTML或XML内容转换为PDF格式,从而实现...
描述中提到,作者建议使用`itext-asian-5.2.0`中的字体,因为第一种字体在导出PDF后,英文显示可能不够理想,影响了可读性。这主要涉及到PDF中的字体嵌入问题。PDF文档默认并不包含所有可能用到的字体,因此在处理多...
在Java开发中,PDF文档的生成与处理是一个常见的需求,特别是在需要导出具有中文字符的文档时。iText是一个流行的PDF库,它提供了强大的API来创建、修改和操作PDF文件。然而,对于中文字符的支持,iText的标准版本...
总之,iText是一款强大的PDF处理工具,虽然在默认情况下对中文支持有限,但通过引入支持中文的jar包和正确配置,我们可以充分利用iText的功能,生成包含中文的高质量PDF报表。在进行这项工作时,了解和掌握字体管理...
基础的iText.jar提供了基本的PDF生成功能,但如果你需要处理中文、日文或韩文字符,还需下载并引入iTextAsian.jar包。 2. **环境配置**: 在Java项目中,将下载的.jar文件添加到项目的类路径中,以便在代码中引用...
确保将此文件添加到你的项目的类路径中,以便在导出PDF时系统能够识别和使用这些字体。 3. **其他注意事项**: - 除了`itext-asian-5.2.0.jar`,可能还需要其他的JasperReports相关的JAR文件,如`jasperreports-...
对于中文字符支持,iText也做了很好的处理,可以有效地避免PDF导出时出现的中文乱码现象。 首先,我们需要将iText.jar库导入到Java项目中。这可以通过将jar文件添加到项目的类路径(classpath)中来完成,或者在...
标题中的“iText导出PDF报表”指的是利用iText库来创建包含各种数据和格式的PDF报告。 首先,我们来详细了解一下iText的核心功能。iText支持从头开始创建PDF文档,包括添加文本、图像、表格、链接等元素。通过它的...
总之,处理ireport导出PDF文件中文问题,关键在于正确配置字符编码、引入支持中文的字体资源,并在必要时利用iText的低级API进行干预。随着技术的发展,类似问题会逐渐减少,但理解这些问题的根源对于提升开发技能和...
在处理包含中文字符的PDF表单时,可能会遇到编码问题,导致中文显示为乱码。解决这个问题的关键在于正确设置字体和编码。iTextPDF支持多种字体和编码,如GBK、UTF-8等。你需要确保PDF文档中使用的字体支持中文字符,...
首先,我们来看如何解决PDF导出中的中文问题。在生成PDF文档时,由于编码和字体的支持问题,中文字符可能会显示为乱码。iText库本身并不直接支持中文字符集,因此我们需要做一些额外的配置。具体步骤包括: 1. 引入...