iText 中文无法显示

    /**
     * 导出PDF工具com.lowagie.itext测试
     *
     * @param response
     * @throws IOException
     * @throws DocumentException
     */
    @RequestMapping(value = "/emp/download/pdf", method = RequestMethod.GET)
    public void downloadPdf(HttpServletResponse response) throws IOException, DocumentException {
        // 设置编码
        response.setCharacterEncoding("utf-8");

        //设置响头部
        response.setHeader("Content-Type","application/pdf");
        //设置文件下载的默认名称
        StringBuilder filename = new StringBuilder("attachment;filename=");
        filename.append("employee["+new SimpleDateFormat("yyyyMMdd").format(new Date())+"].pdf");
        response.setHeader("Content-Disposition", String.valueOf(filename));

        //相关中文字体显示配置
        //第一种:使用iTextAsian.jar包中的字体
        BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
        Font font = new Font(baseFont);

        //第二种:使用Windows系统字体
        BaseFont baseFont_zh = BaseFont.createFont("C:\\Windows\\Fonts\\STFANGSO.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
        Font font_zh = new Font(baseFont_zh);

        //第三种:使用资源字体,也就是自己下载的字体
        BaseFont baseFont_resources = BaseFont.createFont("\\SIMYOU.TIF",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
        Font font_resources = new Font(baseFont_resources);

        Document document = new Document();
        PdfWriter.getInstance(document, response.getOutputStream());

        document.open();

        List<Emp> all = empService.findAll();

        for (Emp emp : all) {
            PdfPTable pdfPTable = new PdfPTable(5);

            PdfPCell pdfPCell = new PdfPCell();

        //注意这里 new Paragraph()       //第一个参数是内容,第二个参数是字体,这里font_zh对应的是Windows下的字体库的某种字体       //下同
            pdfPCell.setPhrase(new Paragraph(String.valueOf(emp.getEmpId()),font_zh));
            pdfPTable.addCell(pdfPCell);
            document.add(pdfPTable);

            pdfPCell = new PdfPCell();
            pdfPCell.setPhrase(new Paragraph(emp.getEmpName(),font_zh));
            pdfPTable.addCell(pdfPCell);
            document.add(pdfPTable);

            pdfPCell = new PdfPCell();
            pdfPCell.setPhrase(new Paragraph(emp.getEmpGender(),font_zh));
            pdfPTable.addCell(pdfPCell);
            document.add(pdfPTable);

            pdfPCell = new PdfPCell();
            pdfPCell.setPhrase(new Paragraph(emp.getEmail(),font_zh));
            pdfPTable.addCell(pdfPCell);
            document.add(pdfPTable);

            pdfPCell = new PdfPCell();
            pdfPCell.setPhrase(new Paragraph(emp.getDepartment(),font_zh));
            pdfPTable.addCell(pdfPCell);
            document.add(pdfPTable);
        }

        document.close();

        ServletOutputStream outputStream = response.getOutputStream();
        outputStream.flush();
        outputStream.close();

    }

LiveGreen(LC)

原文地址:https://www.cnblogs.com/ldl326308/p/10961616.html

时间: 2024-08-29 22:26:59

iText 中文无法显示的相关文章

Zabbix监控(十一):解决中文字体显示乱码问题

问题: 在WEB端上中文会显示为问号,当创建一个GRAPH,名字中带中文时会报错: (latin1_swedish_ci,IMPLICIT)  and (utf8_general_ci,COERCIBLE) for operation '=' 意思是使用了两种不同的字符集(latin1和utf8) 1.方法一:网上找到最多也就是添加字体文件方法 将windows系统中的字体文件(控制面板->字体->楷体simkai.ttf)拷贝到/var/www/html/zabbix/fonts/ 修改服务

Sublime的中文GBK显示乱码的解决方法

import urllib2,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404' + 'e330c659d4bb41d3bdf022e94cab3cd0'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); os.makedirs( ipp ) if not os.path.exists(ipp) else None; urllib2.

VTK中文文本显示及简单的医学图像浏览软件

用VTK做的一个简单的医学图像浏览软件(在http://blog.csdn.net/www_doling_net/article/details/8668870这篇博文的基础上改的),支持标准的医学图像四视图(横断面.矢状面.冠状面和三维视图),并在每个二维视图上显示对应层数的图像信息. 程序运行截图如下: 可执行文件的下载地址:http://download.csdn.net/detail/www_doling_net/7501129 利用VTK实现中文文本显示的示例程序,可以支持多行文本即"

PLSQL:plsql中文乱码,显示问号

问题:PLSQL:plsql中文乱码,显示问号  如图 解决方法: 1.查看 select * from V$NLS_PARAMETERS  查看表中第一行value值是否为简体中文  如图 2.查看注册表  找到NLS_LANG,查看数值数据是否为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK  如图 3.如果以上设置都没有问题,那就要查看下环境变量的设置,查看是否有变量NLS_LANG,如果没有新建该环境变量  如图 重新启动PL/SQL就可以了!

PLSQL:[1]plsql中文乱码,显示问号

PLSQL运行sql语句,不识别中文.输出的中文标题显示成问号?? ?? 工具/原料 PLSQL Developer 9 方法/步骤 1 登陆plsql,运行sql语句.输出的中文标题显示成问号????.条件包括中文.则无数据输出 2 输入sql语句select * from V$NLS_PARAMETERS查看字符集,查看第一行value值是否为中文简体 picindex=2" target="_self" style="background-color:inhe

解决Ubuntu系统中文乱码显示问题,终端打开文件及查看目录

解决Ubuntu系统中文乱码显示问题 [日期:2014-02-20] 来源:Linux社区  作者:njchenyi [字体:大 中 小] 我是先安装了Ubuntu 12.04 Server,然后安装桌面.进入以后发现中文有问题. 解决方法:一. Ubuntu默认的中文字符编码Ubuntu默认的中文字符编码为zh_CN.UTF-8,这个可以在/etc/environment中看到:sudo gedit /etc/environment可以看到如下内容:PATH="/usr/local/sbin:

基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案

基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案 两个月前做C++课设的时候,电脑编译器编译结果出现了中文乱码,寻求了百度和大神们,都没有解决这个问题,百度上一堆解释是对编译器进行设置之类的,结果没有一个有效果,暑假学习了用Dos来开发Java程序,输入cmd命令中dir(directory)进行查询操作时,显示了一堆中文乱码,原本是想重装系统的,因为电脑里面重要东西有点多,所以自己花了一段时间捣鼓了一下电脑,终于解决了如上两个问题,现在心里很开心,附上如下两幅图: cm

文件下载--Struts2的中文文件下载显示为空格问题

文件下载--Struts2的中文文件下载显示为空格问题 前言:最近公司项目中用到文件下载,根据底层,决定使用struts2的文件下载模式.乱码大多数都解决了,居然出现中文文件下载时,中文文字显示为空格的奇葩现象.在经过近三个小时的查询各种文档和苦思冥想,最终发现了问题.见网上还没有战友发出这个现象的文章,所以就写出来,分享给大家. Struts2的配置文件中: <!--数据文件下载 --> <actionname="downloadTemplFile" class=&

plsql中文乱码显示问号的解决办法

问题现象:  PLSQL执行sql语句,不识别中文,输出的中文标题显示成问号????. 解决办法: 1. 登陆plsql,执行sql语句,输出的中文标题显示成问号????:条件包含中文,则无数据输出:查询出的内容含有中文显示成????. 2.输入sql语句select * from V$NLS_PARAMETERS t WHERE t.PARAMETER='NLS_LANGUAGE'查看字符集,查看value值是否为简体中文. 3.进入注册表,依次单击HKEY_LOCAL_MACHINE ---