博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iText中输出中文
阅读量:5900 次
发布时间:2019-06-19

本文共 6309 字,大约阅读时间需要 21 分钟。

原文链接

转载内容

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(); }}

附录:

(iText教程)   (iText核心包文件)
(iTextArea 包文件)

你可能感兴趣的文章
GAN专题阅读小组 | 每周一起读 #05
查看>>
AMD与天津海光合资生产x86服务器芯片
查看>>
雅虎开源了TensorFlowOnSpark
查看>>
网络安全保险在欧洲更受欢迎
查看>>
如何处理IT事件管理以避免混乱
查看>>
物联网确保消费者隐私安全 才能起飞
查看>>
揭秘使用免费WiFi的真实代价
查看>>
《交互式程序设计 第2版》一2.3.2 数组
查看>>
移动互联网金融app 存在信息安全问题
查看>>
Android 开发中使用 SQLite 数据库
查看>>
Android后门GhostCtrl,完美控制设备任意权限并窃取用户数据
查看>>
IBM郭继军:机器学习配合行业经验将帮助企业成就未来
查看>>
Rambus9000万美元收购Inphi存储器互联业务
查看>>
泉州电信推进渠道互联网化转型
查看>>
《BackTrack 5 Cookbook中文版——渗透测试实用技巧荟萃》—第3章3.6节识别操作系统...
查看>>
linux系统防火墙iptables命令规则及配置的示例
查看>>
10 个顶尖的 Linux 开源人工智能工具
查看>>
Firefox 跟踪保护技术将页面加载时间减少 44%
查看>>
聚合(根)、实体、值对象精炼思考总结
查看>>
Aop RealProxy 千年遇BUG
查看>>