iText中输出中文
原文链接
http://hintcnuie.iteye.com/blog/183690
转载内容
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 包文件)
iText中输出中文的更多相关文章
- iText中输出 中文
iText中输出中文,有三种方式: 1.使用iTextAsian.jar中的字体 BaseFont.createFont("STSong-Light", "UniG ...
- 关于Python中输出中文的一点疑问
#encoding=gb2312 import urllib import re def getHtml(url): page = urllib.urlopen(url) html = page.re ...
- scrapy中输出中文保存中文
1.json文件中文解码: #!/usr/bin/python #coding=utf-8 #author=dahu import json with open('huxiu.json','r') a ...
- C++输出中文字符(转)
C++输出中文字符 1. cout 场景1: 在源文件中定义 const char* str = "中文" 在 VC++ 编译器上,由于Windows环境用 GBK编码,所以字符串 ...
- java web中请求和响应中包含中文出现乱码解析
说明:在计算机中保存的一切文本信息是以一定的编码表(0,1,0,1)来保存我们所认识的字符(汉字或英文字符),由字符到计算机存储的二进制过程是编码,由读取二进制到文本的过程称为解码.而字符编码有多种不 ...
- 在Servlet中出现一个输出中文乱码的问题(已经解)。
在Servlet中出现一个输出中文乱码的问题,已经解. @Override public void doPost(HttpServletRequest reqeust, HttpServletResp ...
- Python源码文件中带有中文时,输出乱码
Python源码文件中带有中文时,文件头应加注释: #!/usr/bin/env python # -*- coding: utf-8 -*- 第一行注释是为了告诉Linux/OS X系统,这是一个P ...
- 【C++】解决c++中cout输出中文乱码问题
问题:cout输出中文乱码.例如下面的代码输出会乱码. cout << "成功!" << endl; 输出结果: 解决方案: 控制台还原旧版即可,打开程序- ...
- asp.net core输出中文乱码的问题
摘要 在学习asp.net core的时候,尝试在控制台,或者页面上输出中文,会出现乱码的问题. 问题重现 新建控制台和站点 public class Program { public static ...
随机推荐
- 将map中的查询参数拼装到URL路径中
被调接口的URL路径: //被调接口url String apiUrl = "http://api.open.xxxxxx.com/implatform/interview/send?acc ...
- 【Java】LinkedBlockingQueue、PriorityQueue and ConcurrentLinkedQueue
1.LinkedBlockingQueue: 基于链接节点的可选限定的blocking queue . 这个队列排列元素FIFO(先进先出). 队列的头部是队列中最长的元素. 队列的尾部是队列中最短时 ...
- Eigen教程(7)
整理下Eigen库的教程,参考:http://eigen.tuxfamily.org/dox/index.html 归约.迭代器和广播 归约 在Eigen中,有些函数可以统计matrix/array的 ...
- 实验吧 web题writeup
1.http://ctf5.shiyanbar.com/web/wonderkun/web/index.html 用户名我输入:or'xor"and"select"uni ...
- 神经网络 之 DNN(深度神经网络) 介绍
CNN(卷积神经网络).RNN(循环神经网络).DNN(深度神经网络) CNN 专门解决图像问题的,可用把它看作特征提取层,放在输入层上,最后用MLP 做分类. RNN 专门解决时间序列问题的,用来提 ...
- 【转】 oracle 层次查询判断叶子和根节点
Oracle 9i判断是叶子或根节点,是比较麻烦的一件事情,SQL演示脚本如下: DROP TABLE idb_hierarchical; create TABLE idb_hierarchical ...
- html页面布局总结篇
1. 使用float布局 注意点:使用浮动布局要注意清除浮动.使用伪类清除 浮动层:给元素的float属性赋值后,就是脱离文档流,进行左右浮动,紧贴着父元素(默认为body文本区域)的左右边框. 而此 ...
- tomcat出现的PermGen Space问题<转>
最近做项目碰到了让我纠结的问题,tomcat服务器运行一段时间,总是会自动报异常:java.lang.OutOfmemoryError: PermGen Space 的错误,导致项目无法正常运行. 出 ...
- Java编程的逻辑 (38) - 剖析ArrayList
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...
- android开发(42) 使用andorid操作蓝牙打印机
最近接到一个需求,使用android发起打印任务,通过蓝牙连接打印机.条件如下: 打印机:南京富士通DPK760E,具有蓝牙功能 Android手机:普通手机,Android 4.4版本,具有蓝牙功能 ...