iText中输出 中文
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中输出中文
原文链接 http://hintcnuie.iteye.com/blog/183690 转载内容 iText中输出中文,有三种方式: 1.使用iTextAsian.jar中的字体 BaseFont.c ...
- 关于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 ...
随机推荐
- leetcode_173【二叉搜索树迭代器】
实现一个二叉搜索树迭代器.你将使用二叉搜索树的根节点初始化迭代器. 调用 next() 将返回二叉搜索树中的下一个最小的数. 示例: BSTIterator iterator = new BSTIte ...
- sql server存储过程中SELECT 与 SET 对变量赋值的区别 转自Theo
SQL Server 中对已经定义的变量赋值的方式用两种,分别是 SET 和 SELECT. 对于这两种方式的区别,SQL Server 联机丛书中已经有详细的说明,但很多时候我们 并没有注意,其实这 ...
- 2017年11月28日 C#进程和线程
进程 需要放using System.Diagnostics;才可以用进程 用时的方法名为Process 用两个按钮一个为选择文件夹一个为打开可以打开系统内的进程. 注意:打开时一定要用进程名 Pro ...
- 基于Java实现简单亚马逊爬虫
前言:最近博主买了台Kindle,感觉亚马逊上的图书资源质量挺好,还时不时地会有价格低但质量高的书出售,但限于亚马逊并没有很好的优惠提醒功能,自己天天盯着又很累.于是,我自己写了一个基于Java的亚马 ...
- Win10自带Ubuntu子系统下Mysql安装踩坑记录
linux系统为win10自带Ubuntu子系统 错误的安装过程 我按照一般的方法安装mysql,安装步骤如下 1.升级源 $ sudo apt-get update 2.安装mysql $ sudo ...
- 《JavaWeb从入门到改行》那些年一起学习的Servlet
目录 获取ServletContext : ServletContext接口中的一些方法 application域存取数据功能 代码演示: application域获取项目文件路径 代码演示: API ...
- mysql的with rollup
无意间发现了mysql的with rollup函数(用在group by 函数后面) 测试 1. SELECT NAME,DATE,score FROM stu 结果是 2. SELECT NAME, ...
- JS小案例(基础好烦恼少)----持续更新
*************************************************** <!DOCTYPE html> <html lang="en&quo ...
- CentOS 7运维管理笔记(9)----Apache 安全控制与认证
Apache 提供了多种安全控制手段,包括设置Web访问控制.用户登陆密码认证及 .htaccess 文件等.通过这些技术手段,可以进一步提升Apache服务器的安全级别,减少服务器受攻击或数据被窃取 ...
- 03_ActiveMQ安全机制
[ActiveMQ安全机制] [ ActiveMQ的web管理界面 ] 地址 http://127.0.0.1:8161/admin ActiveMQ管理控制台使用jetty部署,所以需要修改密码, ...