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中文输出打包IDEA工程,详情见我的博客,里面有输出中文的原理
生成PDF报表的Java组件,包含处理中文的问题
itext中文: public static void main(String[] args) { ... document.add(new Paragraph("看看有没有输出中文?", getFont())); document.close(); } catch (Exception e) { e.printStackTrace(); } }
Android端用itext库生成的PDF文档无法输出中文,现修改itext库jar包,未修改源码,只是加入了字体部分。调用示例亲测可用,生成中文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-...
完美解决pdf中文不输出问题,jasperreport和springmvc开发必备
iText是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。
这是曾经在项目中做pdf导出时用过的itext的包,有包含asian包,可解决中文输出问题。内容包含:itext-4.2.1&&itext;-asian-5.2.0&&itext;-pdfa-5.5.13
相关教程 iText 简介 iText创建文档简介 iText入门实例 IText使用PDF模板输出报表的实践 我和iText第一次亲密接触 相关JAR iText-2.1.7.jar(核心) iTextAsian.jar(中文支持) iText-rups-2.1.7.jar iText-rtf-...
xhtmlrenderer 进行HTML转PDF,修改了core-renderer-R8的源码,兼容中英文换行,且保持对英文单词完整性,亲测可用。
itext-2.0.2.jar 和itextasian-1.5.2.jar,两个一起使用可以支持中文输出。版本低了点,但是能用。
itext
JasperReports内部使用iText来输出pdf文档,maven仓库中又没有这个配置, iText对中文是放在单独的包iTextAsian.jar中,于是需要在工程中加入iTextAsian。这个文件是已经编译好的jar,可以直接放到本地仓库进行使用
iTextSharp 开发PDF源代码及编译,解决itext中输出中文“Font 'STSongStd-Light' with 'UniGB-UCS2-H' is not recognized.”错误。
iText是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用... <br>包内包含两个测试类,相关的包和英文的帮助文档 <br>本人在测试时英文输出成功,中文失败.
java使用itext将html转为pdf所需的jar包,包含输出中文的itext-asian.jar。还有xmlworker.jar,有这3个jar包就能导出一份pdf了。
itext itext7的一些简单操作(二维码、水印、表格、HTML代码生成PDF) ...HtmlToPdf类由于将html页面全部在一个pdf中输出,造成水印无法使用,欢迎各位参与解决! 本文是在其他人的基础上整理而来,原始访问链接:
itext中关于亚洲编码的类库,在这里用于中文字体的输入。 junit.jar Junit包,当你运行Hibernate自带的测试代码的时候需要,否则就不用。 commons-digester.jar Apache Commons包中的一个,通过它可以很方便的...
实例010 在Eclipse项目中编程输出字符表情 15 实例011 为Eclipse添加新的JDK环境 17 实例012 设置Eclipse中文API提示信息 18 实例013 为项目添加类库 20 实例014 使当前项目依赖另一个项目 21 1.3 界面设计器 22 ...