iText中输出中文,有三种方式:
1、使用iTextAsian.jar中的字体
BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
2、使用Windows系统字体(TrueType)
BaseFont.createFont("C:/WINDOWS/Fonts/SIMYOU.TTF", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
3、使用资源字体(ClassPath)
BaseFont.createFont("/SIMYOU.TTF", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
第2、三种方式使用的字体多一些,但是需要和实际资源绑定,在实际项目中可以将一些字体库和项目打包在一起,下面我们以iTextAsian中自带的字体为例说明如何输出中文:
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
BaseFont.NOT_EMBEDDED);
Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);
document.add(new Paragraph(" 产生的报告",FontChinese));
一个完整的例子:
/*
* $Id: RepeatingTable.java,v 1.5 2005/05/09 11:52:47 blowagie Exp $
* $Name: $
*
* This code is part of the 'iText Tutorial'.
* You can find the complete tutorial at the following address:
* http://itextdocs.lowagie.com/tutorial/
*
* This code is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* itext-questions@lists.sourceforge.net
*/
package com.lowagie.examples.objects.tables.alternatives;
import java.awt.Color;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Date;
import com.lowagie.text.Cell;
import com.lowagie.text.Document;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.FontFactory;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.Rectangle;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfWriter;
/**
* Shows how a table is split if it doesn't fit the page.
*/
public class RepeatingTable {
/**
* Shows how a table is split if it doesn't fit the page.
*
* @param args
* no arguments needed
*/
public static void main(String[] args) {
System.out.println("table splitting");
// creation of the document with a certain size and certain margins
Document document = new Document(PageSize.A4.rotate(), 50, 50, 50, 50);
try {
// creation of the different writers
String filePath = "d:" + File.separator + "temp" + File.separator
+ "iText_Generated_pdf" + File.separator + "table"
+ File.separator;
File file = new File(filePath);
if (!file.exists()) {
file.mkdirs();
}
PdfWriter.getInstance(document, new FileOutputStream(filePath
+ "repeatingtable.pdf"));
// we add some meta information to the document
document.addAuthor("chenzwei@cn.ibm.com,CTE WAC,GBSC,CDL,IBM");
document.addSubject("This is a sample of iText in CTE.");
document.open();
Table datatable = new Table(10);
int headerwidths[] = { 10, 24, 12, 12, 7, 7, 7, 7, 7, 7 };
datatable.setWidths(headerwidths);
datatable.setWidth(100);
datatable.setPadding(3);
// the first cell spans 10 columns
Cell cell = new Cell(new Phrase(
"Administration -System Users Report", FontFactory.getFont(
FontFactory.HELVETICA, 24, Font.BOLD)));
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setLeading(30);
cell.setColspan(10);
cell.setBorder(Rectangle.NO_BORDER);
cell.setBackgroundColor(new Color(0xC0, 0xC0, 0xC0));
datatable.addCell(cell);
// These cells span 2 rows
datatable.setBorderWidth(2);
datatable.setAlignment(1);
datatable.addCell("User Id");
datatable.addCell("Name\nAddress");
datatable.addCell("Company");
datatable.addCell("Department");
datatable.addCell("Admin");
datatable.addCell("Data");
datatable.addCell("Expl");
datatable.addCell("Prod");
datatable.addCell("Proj");
datatable.addCell("Online");
// this is the end of the table header
datatable.endHeaders();
datatable.setBorderWidth(1);
for (int i = 1; i < 30; i++) {
datatable.setAlignment(Element.ALIGN_LEFT);
datatable.addCell("myUserId");
datatable
.addCell("Somebody with a very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very long long name");
datatable.addCell("No Name Company");
datatable.addCell("D" + i);
datatable.setAlignment(Element.ALIGN_CENTER);
datatable.addCell("No");
datatable.addCell("Yes");
datatable.addCell("No");
datatable.addCell("Yes");
datatable.addCell("No");
datatable.addCell("Yes");
}
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);
document.add(new Paragraph(" 产生的报告",FontChinese));
document.add(datatable);
document.newPage();
document.add(new Paragraph(
"com.lowagie.text.pdf.PdfPTable - Cells split\n\n"));
datatable.setConvert2pdfptable(true);
document.add(datatable);
document.newPage();
document.add(new Paragraph(
"com.lowagie.text.Table - Cells kept together"));
datatable.setConvert2pdfptable(false);
datatable.setCellsFitPage(true);
document.add(datatable);
document.newPage();
document
.add(new Paragraph(
"com.lowagie.text.pdf.PdfPTable - Cells kept together\n\n"));
datatable.setConvert2pdfptable(true);
document.add(datatable);
} catch (Exception e) {
e.printStackTrace();
}
// we close the document
document.close();
}
}
附录:
http://www.lowagie.com/iText/tutorial/index.html (iText教程)
http://www.lowagie.com/iText/download.html (iText核心包文件)
http://sourceforge.net/project/showfiles.php?group_id=15255&release_id=167948 (iTextArea 包文件)
分享到:
相关推荐
这个"itext7中文输出打包"项目,从标题和描述来看,主要是关于如何在iText7中处理中文字符并将其输出到PDF文档中的实践教程。这个IDEA工程提供了一个完整的示例,演示了如何在Java环境中使用iText7来解决中文字符...
在处理PDF生成时,尤其在企业级应用中,能够支持中文字符集是至关重要的,因为很多业务涉及到中文的报告和文档。iText库默认可能无法完美地显示中文字符,但通过引入特定的jar包,我们可以解决这个问题。 在生成PDF...
### itext中文操作手册知识点详解 #### 一、iText简介与中文支持 iText是一款强大的Java库,用于创建和操作PDF文档。它不仅能够帮助开发者生成复杂的PDF文件,还能处理PDF的加密、签名以及表单填充等功能。然而,...
它包含了必要的字体和编码支持,使得iText能够正确地渲染和输出中文文本。在使用这个库时,开发人员不再需要担心由于缺少合适的中文字体而导致的乱码问题。iTextAsian不仅解决了中文显示的问题,也同时支持其他亚洲...
在标题中提到的"iText5.5中文包"是指iText库的5.5.2版本,它经过优化,能够有效地处理中文字符,为Java开发者提供了一个强大的工具来生成包含中文内容的PDF文档。在描述中提到了"iText-asian",这是一个专门针对亚洲...
因此,当尝试输出中文时,如果没有正确的字体资源,就会出现乱码或不显示的情况。 解决这个问题的关键在于引入支持中文的字体。你可以采取以下步骤: 1. **导入字体资源**:首先,你需要一个支持中文的TrueType ...
这篇内容将深入探讨如何在Android环境中使用iText库生成包含中文的PDF文档。 首先,我们需要了解为什么原版iText库无法直接支持中文。这是因为iText库默认使用的是Adobe的标准14字体,这些字体不包含中文字符。为...
这是因为 iText 默认不支持中文字符集。这个问题将在第 9 章中解决,主要涉及字体的配置和使用。 在创建 `Document` 时,可以自定义页面尺寸。`Rectangle` 类允许你定义页面的宽度和高度,以及背景颜色。例如,创建...
itext中文: public static void main(String[] args) { ... document.add(new Paragraph("看看有没有输出中文?", getFont())); document.close(); } catch (Exception e) { e.printStackTrace(); } }
这个中文教程是为开发者提供一个深入了解和使用iText的平台,特别适合那些希望在项目中处理PDF文档的程序员。iText不仅支持创建新的PDF文档,还允许对现有文档进行编辑、添加文本、图像、表格等元素,以及进行数字...
它包含了必要的字体和编码集,使得Itext可以正确地渲染和输出中文字符。在使用`iTextAsian.jar`时,需要将其与`itext-2.0.8.jar`一起导入到项目中,这样才能确保中文字符在生成的PDF中能正常显示。 接下来,我们来...
iText是一款广泛使用的Java库,专门...总之,正确处理iText中的中文问题需要对Unicode编码、字体选择、PDF编码设置以及iText库的使用有深入理解。通过合理的配置和代码编写,我们可以顺利地在PDF中显示和处理中文内容。
根据标题“iText中文教程.pdf”及描述中的信息,本教程将介绍使用iText创建PDF文档的基本流程。具体步骤如下: 1. **创建Document对象**: - **定义**:`Document`是iText的核心类之一,用于表示一个PDF文档。 - ...
Itext5.5.13 完整的全套包,包含bcpkix-jdk15on-1.47.jar bcprov-jdk15on-1.59.jar itext-asian-5.2.0.jar itext-hyph-xml-5.1.1.jar itext-pdfa-5.5.13-javadoc.jar itext-pdfa-5.5.13-sources.jar itext-pdfa-...
这个入门开发文档将引导你了解如何在Java项目中使用iText来创建PDF文件。首先,我们需要在项目中添加iText的相关依赖,以便使用其提供的各种功能。以下是iText 7.0.2版本的Maven依赖: ```xml <groupId>...
iText是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。
完美解决pdf中文不输出问题,jasperreport和springmvc开发必备
这个中文帮助文档主要介绍了如何使用 iText 来创建 PDF 文件,特别强调了处理中文字符的问题。以下是对文档内容的详细解析: 首先,创建一个 PDF 文件是通过 iText 的五个基本步骤完成的,这些步骤在“HelloWord”...
- 在iText中直接使用中文可能会导致字符无法正常显示的问题。 - 解决方法将在后续章节(如第9章)中介绍,涉及字体的加载和配置。 #### 五、总结 - iText是一个功能强大的Java库,用于生成和修改PDF文件。 - 创建...
Java中的iText库是一个强大的PDF处理工具,它允许开发者创建、编辑和操作PDF文档。在IT行业中,生成PDF和Word文档通常用于报告、发票、合同等文档的自动化生成,尤其在需要包含中文字符、表格和图片的情况下。iText...