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中自带的字体为例说明如何输出中文:

  1. BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
  2. BaseFont.NOT_EMBEDDED);
  3. Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);
  4. document.add(new Paragraph(" 产生的报告",FontChinese));

一个完整的例子:

  1. /*
  2. * $Id: RepeatingTable.java,v 1.5 2005/05/09 11:52:47 blowagie Exp $
  3. * $Name:  $
  4. *
  5. * This code is part of the 'iText Tutorial'.
  6. * You can find the complete tutorial at the following address:
  7. * http://itextdocs.lowagie.com/tutorial/
  8. *
  9. * This code is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  12. *
  13. * itext-questions@lists.sourceforge.net
  14. */
  15. package com.lowagie.examples.objects.tables.alternatives;
  16. import java.awt.Color;
  17. import java.io.File;
  18. import java.io.FileOutputStream;
  19. import java.util.Date;
  20. import com.lowagie.text.Cell;
  21. import com.lowagie.text.Document;
  22. import com.lowagie.text.Element;
  23. import com.lowagie.text.Font;
  24. import com.lowagie.text.FontFactory;
  25. import com.lowagie.text.PageSize;
  26. import com.lowagie.text.Paragraph;
  27. import com.lowagie.text.Phrase;
  28. import com.lowagie.text.Rectangle;
  29. import com.lowagie.text.Table;
  30. import com.lowagie.text.pdf.BaseFont;
  31. import com.lowagie.text.pdf.PdfWriter;
  32. /**
  33. * Shows how a table is split if it doesn't fit the page.
  34. */
  35. public class RepeatingTable {
  36. /**
  37. * Shows how a table is split if it doesn't fit the page.
  38. *
  39. * @param args
  40. *            no arguments needed
  41. */
  42. public static void main(String[] args) {
  43. System.out.println("table splitting");
  44. // creation of the document with a certain size and certain margins
  45. Document document = new Document(PageSize.A4.rotate(), 50, 50, 50, 50);
  46. try {
  47. // creation of the different writers
  48. String filePath = "d:" + File.separator + "temp" + File.separator
  49. + "iText_Generated_pdf" + File.separator + "table"
  50. + File.separator;
  51. File file = new File(filePath);
  52. if (!file.exists()) {
  53. file.mkdirs();
  54. }
  55. PdfWriter.getInstance(document, new FileOutputStream(filePath
  56. + "repeatingtable.pdf"));
  57. // we add some meta information to the document
  58. document.addAuthor("chenzwei@cn.ibm.com,CTE WAC,GBSC,CDL,IBM");
  59. document.addSubject("This is a sample of iText in CTE.");
  60. document.open();
  61. Table datatable = new Table(10);
  62. int headerwidths[] = { 10, 24, 12, 12, 7, 7, 7, 7, 7, 7 };
  63. datatable.setWidths(headerwidths);
  64. datatable.setWidth(100);
  65. datatable.setPadding(3);
  66. // the first cell spans 10 columns
  67. Cell cell = new Cell(new Phrase(
  68. "Administration -System Users Report", FontFactory.getFont(
  69. FontFactory.HELVETICA, 24, Font.BOLD)));
  70. cell.setHorizontalAlignment(Element.ALIGN_CENTER);
  71. cell.setLeading(30);
  72. cell.setColspan(10);
  73. cell.setBorder(Rectangle.NO_BORDER);
  74. cell.setBackgroundColor(new Color(0xC0, 0xC0, 0xC0));
  75. datatable.addCell(cell);
  76. // These cells span 2 rows
  77. datatable.setBorderWidth(2);
  78. datatable.setAlignment(1);
  79. datatable.addCell("User Id");
  80. datatable.addCell("Name\nAddress");
  81. datatable.addCell("Company");
  82. datatable.addCell("Department");
  83. datatable.addCell("Admin");
  84. datatable.addCell("Data");
  85. datatable.addCell("Expl");
  86. datatable.addCell("Prod");
  87. datatable.addCell("Proj");
  88. datatable.addCell("Online");
  89. // this is the end of the table header
  90. datatable.endHeaders();
  91. datatable.setBorderWidth(1);
  92. for (int i = 1; i < 30; i++) {
  93. datatable.setAlignment(Element.ALIGN_LEFT);
  94. datatable.addCell("myUserId");
  95. datatable
  96. .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");
  97. datatable.addCell("No Name Company");
  98. datatable.addCell("D" + i);
  99. datatable.setAlignment(Element.ALIGN_CENTER);
  100. datatable.addCell("No");
  101. datatable.addCell("Yes");
  102. datatable.addCell("No");
  103. datatable.addCell("Yes");
  104. datatable.addCell("No");
  105. datatable.addCell("Yes");
  106. }
  107. BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
  108. Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);
  109. document.add(new Paragraph(" 产生的报告",FontChinese));
  110. document.add(datatable);
  111. document.newPage();
  112. document.add(new Paragraph(
  113. "com.lowagie.text.pdf.PdfPTable - Cells split\n\n"));
  114. datatable.setConvert2pdfptable(true);
  115. document.add(datatable);
  116. document.newPage();
  117. document.add(new Paragraph(
  118. "com.lowagie.text.Table - Cells kept together"));
  119. datatable.setConvert2pdfptable(false);
  120. datatable.setCellsFitPage(true);
  121. document.add(datatable);
  122. document.newPage();
  123. document
  124. .add(new Paragraph(
  125. "com.lowagie.text.pdf.PdfPTable - Cells kept together\n\n"));
  126. datatable.setConvert2pdfptable(true);
  127. document.add(datatable);
  128. } catch (Exception e) {
  129. e.printStackTrace();
  130. }
  131. // we close the document
  132. document.close();
  133. }
  134. }

附录:

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中输出 中文的更多相关文章

  1. iText中输出中文

    原文链接 http://hintcnuie.iteye.com/blog/183690 转载内容 iText中输出中文,有三种方式: 1.使用iTextAsian.jar中的字体 BaseFont.c ...

  2. 关于Python中输出中文的一点疑问

    #encoding=gb2312 import urllib import re def getHtml(url): page = urllib.urlopen(url) html = page.re ...

  3. scrapy中输出中文保存中文

    1.json文件中文解码: #!/usr/bin/python #coding=utf-8 #author=dahu import json with open('huxiu.json','r') a ...

  4. C++输出中文字符(转)

    C++输出中文字符 1. cout 场景1: 在源文件中定义 const char* str = "中文" 在 VC++ 编译器上,由于Windows环境用 GBK编码,所以字符串 ...

  5. java web中请求和响应中包含中文出现乱码解析

    说明:在计算机中保存的一切文本信息是以一定的编码表(0,1,0,1)来保存我们所认识的字符(汉字或英文字符),由字符到计算机存储的二进制过程是编码,由读取二进制到文本的过程称为解码.而字符编码有多种不 ...

  6. 在Servlet中出现一个输出中文乱码的问题(已经解)。

    在Servlet中出现一个输出中文乱码的问题,已经解. @Override public void doPost(HttpServletRequest reqeust, HttpServletResp ...

  7. Python源码文件中带有中文时,输出乱码

    Python源码文件中带有中文时,文件头应加注释: #!/usr/bin/env python # -*- coding: utf-8 -*- 第一行注释是为了告诉Linux/OS X系统,这是一个P ...

  8. 【C++】解决c++中cout输出中文乱码问题

    问题:cout输出中文乱码.例如下面的代码输出会乱码. cout << "成功!" << endl; 输出结果: 解决方案: 控制台还原旧版即可,打开程序- ...

  9. asp.net core输出中文乱码的问题

    摘要 在学习asp.net core的时候,尝试在控制台,或者页面上输出中文,会出现乱码的问题. 问题重现 新建控制台和站点 public class Program { public static ...

随机推荐

  1. 机器学习——LightGBM

    基础概念 LigthGBM是boosting集合模型中的新进成员,它和xgboost一样是对GBDT的高效实现,很多方面会比xgboost表现的更为优秀.原理上它和GBDT及xgboot类似,都采用损 ...

  2. 快手、抖音、微视类短视频SDK接入教程,7步就能搞定

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由视频咖 发表于云+社区专栏 终端部分 按照如下三步操作,可以用 XCode 或者 Android Studio 编译和调试小视频 Ap ...

  3. Mac OS X安装OpenGL

    Mac OS X安装OpenGL 安装最新的cmake brew install cmake brew upgrade cmake 安装glew brew install glew 安装GLTools ...

  4. Scrapy框架学习(二)Scrapy入门

    接下来以爬取quote.toscrape.com为例完成一遍Scrapy的抓取流程. 首先创建一个Scrapy项目.打开命令行,输入以下命令: scrapy startproject projectn ...

  5. [转载+补充][PY3]——环境配置(2)——windows下安装pycharm并连接Linux的python环境

    原文地址:<你所会用到的Python学习环境和工具> 1. 下载安装Pycharm专业版 具体方法略.Pycharm5激活方法参考http://www.cnblogs.com/snsdzj ...

  6. 【转】WCF 服务第一次调用慢的问题

    写了一个WCF Serivces供外部程序通过.NET Businesss Connector调用AX的代码,第一次调用的时候总是很慢,有时候甚至超过1分钟,访问地址改成http://localhos ...

  7. ElasticSearch基础入门

    1.query查询表达式 Elasticsearch 提供一个丰富灵活的查询语言叫做 查询表达式 , 查询表达式(Query DSL)是一种非常灵活又富有表现力的 查询语言,它支持构建更加复杂和健壮的 ...

  8. java 配置在.properties文件中的常量

    不让用常量类,那就用.properties文件配置,放在根目录. import java.util.HashMap; import java.util.Iterator; import java.ut ...

  9. 理解 Azure 虚拟机的性能监视

    随着越来越多的用户将生产应用迁移到云平台,一些传统 IT 的运维功能也相应的需要改变,例如监控,备份等等.我们希望通过这一系列的文章来协助用户更好的理解在 Azure 云平台上实现资源监控的方法. 在 ...

  10. 使用Electron开发桌面应用

    Electron 框架的前身是 Atom Shell,可以让你写使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序.它是基于io.js 和 Chromium 开源项目,并用于在 ...