`

itext导出pdf 中文

阅读更多

最近一个项目需要导出pdf文档,选择使用了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、三种方式使用的字体多一些,但是需要和实际资源绑定,在实际项目中可以将一些字体库和项目打包在一起。
以下个人写的一个示例,但导出pdf后,有的电脑能正常显示,有的不显示中文字体,可能是客户机没有相关字体库,建议使用第三种方式

 

 /*public void xxxx(){

         
         
         
             response.setContentType("application/pdf");
             response.setHeader("Expires", "0");
             //response.setHeader("pragma","no-cache");
             response.setContentType("application/x-msdownload");//指定文件为下载方式,是其不能在线打开
             response.setHeader("Content-Disposition", "attachment; filename="+Day.getDay3()+b.getBcode()+".pdf");
             response.setHeader("Cache-Control:no-cache", "must-revalidate, post-check=0, pre-check=0");
             response.setHeader("Pragma", "public");
             //response.setHeader("Content-disposition","inline; filename="+Day.getDay3()+b.getBcode()+".pdf" );
             try {
               // 新建一个文档,默认是A4纸的大小,4个边框为36
               Document document = new Document();
               // 将文档输出,我们写到输出流里面
               PdfWriter.getInstance(document, response.getOutputStream());
               // 以下的代码没有特殊的东西了。
                   
               // 打开文档
               document.open();       
               BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
                             BaseFont.NOT_EMBEDDED);
                         Font FontChinese = new Font(bfChinese, 12, Font.BOLD);
                         Font contextFont = new Font(bfChinese,10,Font.NORMAL);   
               Paragraph title = new Paragraph("文儀用品申請清單 ",FontChinese);   
                 //设置标题格式对齐方式   
                 title.setAlignment(Element.ALIGN_CENTER);  
                 //title.setFont(FontChinese);   
                 document.add(title);
                 Paragraph mydbranch = new Paragraph("申請部門:"+b.getBname(),new Font(bfChinese,8,Font.NORMAL));  
                 mydbranch.setAlignment(Element.ALIGN_RIGHT);                    
                 document.add(mydbranch);
                 Paragraph mydatep = new Paragraph("列印時間:"+Day.getDay2(),new Font(bfChinese,8,Font.NORMAL));  
                 mydatep.setAlignment(Element.ALIGN_RIGHT);               
                 document.add(mydatep);
              
                 Table table = new Table(6);   
                 int width[] = {10,16,15,20,10,10};//设置每列宽度比例   
                 table.setWidths(width); 
                 
                 table.setWidth(90);//占页面宽度比例   
                 
                 table.setPadding(2);
                 table.setSpacing(0);
                 table.setAlignment(Element.ALIGN_CENTER);//居中   
                 table.setAlignment(Element.ALIGN_MIDDLE);//垂直居中   
                 table.setAutoFillEmptyCells(true);//自动填满   
                 table.setBorderWidth(1);//边框宽度   
                 Cell cell = new Cell();
                 cell.setVerticalAlignment(Element.ALIGN_MIDDLE);   
                 cell.setVerticalAlignment(Element.ALIGN_CENTER);   
                 Cell cell1= new Cell(new Paragraph("xx項目 ",contextFont));
                 //Cell cell2= new Cell(new Paragraph("xx名稱 ",contextFont));
                 Cell cell3= new Cell(new Paragraph("xx編號 ",contextFont));
                 Cell cell4= new Cell(new Paragraph("xx單價  ",contextFont));
                 Cell cell5= new Cell(new Paragraph("xx名稱  ",contextFont));
                 Cell cell6= new Cell(new Paragraph("xx數量 ",contextFont));
                 Cell cell7= new Cell(new Paragraph("xx單位  ",contextFont));
                 table.addCell(cell1);
                 //table.addCell(cell2);
                 table.addCell(cell3);
                 table.addCell(cell4);
                 table.addCell(cell5);
                 table.addCell(cell6);
                 table.addCell(cell7);
                 int i=0;
                            for (OrderList o : listO) {
                                     int num = o.getNum();
                                     if (num != 0) {
                                               i++;
                                               Food f = this.fservice.getFood(o.getFid());
                                                 table.addCell(new Cell(i+""));            
                                        table.addCell(new Cell(f.getFnum()));
                                        table.addCell(new Cell(f.getStandard()));
                                        table.addCell(new Cell(new Paragraph(f.getFname(),contextFont)));
                                        table.addCell(new Cell(num+"" ));
                                        table.addCell(new Cell(new Paragraph(f.getUnit(),contextFont)));
                                     
                                     }
                                     
                                     
                            }
                 document.add(table);
                 document.add(new Paragraph("\n"));
                 Paragraph bottomName1 = new Paragraph("簽字:_________________",contextFont);   
                 bottomName1.setAlignment(Element.ALIGN_RIGHT);   
                 document.add(bottomName1);
                 Paragraph bottomName2 = new Paragraph("日期:_________________",contextFont);   
                 bottomName2.setAlignment(Element.ALIGN_RIGHT);     
                 document.add(bottomName2);
                 document.close();
             } catch (Exception ex) {
               ex.printStackTrace();
             }

}

 

分享到:
评论

相关推荐

    Itext导出PDF,中文不显示字体

    Itext导出PDF,中文不显示字体,在body上设置font-family: "Arial Unicode MS",同时在java中引入fontResolver.addFont("/ARIALUNI.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); 就可以显示中文了

    java使用itext导出PDF文本绝对定位(实现方法)

    java使用iText导出PDF文本绝对定位(实现方法) iText是一个流行的Java类库,用于生成PDF文档。下面我们将探讨如何使用iText在Java中导出PDF文本,并实现绝对定位。 iText简介 iText是一个开源的Java类库,用于...

    itextpdf 导出pdf 表格 自动分页中文 目录

    iTextPDF是一个Java库,专门用于创建、编辑和处理PDF文档,而`iText-asian-5.2.0.jar`和`itextpdf-5.5.5.jar`是iText库的不同版本,用于支持中文字符和其他亚洲语言。 1. **iTextPDF**: iTextPDF是iText项目的一...

    velocity+itext导出pdf

    总结起来,"Velocity+Itext导出PDF"是一种高效且灵活的方式,可以将动态数据和预定义的模板结合,生成高质量的PDF文档。通过熟练掌握这两个工具的使用,开发者可以创建出满足各种需求的PDF文档生成系统。

    itext导出pdf不显示中文 ITextRenderer不显示中文

    "iText导出pdf不显示中文 ITextRenderer不显示中文"这个问题,通常是由于字体配置不当或者缺失支持中文的字体资源导致的。下面我们将深入探讨这个问题及其解决方案。 首先,我们需要理解iText的工作原理。iText创建...

    java 用iText导出PDF小例子

    本文将介绍一个使用iText库导出PDF的小例子。 首先,介绍iText库的基本知识。iText是一个开源的Java库,允许开发者创建和操纵PDF文档。它包括生成PDF文件、合并或分割现有PDF文件、添加文本或图像等功能。iText广泛...

    itext导出PDF所需jar包

    在标题中提到的"itext导出PDF所需jar包"是指使用iText库来生成PDF文件时所需的Java类库。iText允许开发者通过编程方式生成高质量的PDF文档,包括文本、图像、表格、链接等多种元素,适用于各种业务场景,如报表生成...

    java使用IText导出PDF(包含图片、表格、文字等等Demo和依赖包)

    Java使用IText库导出PDF是一项常见的任务,特别是在需要生成报告、文档或发票等静态内容时。IText是一个强大的PDF库,它允许开发者在Java环境中创建、修改和处理PDF文档。下面将详细介绍如何使用IText库来实现这个...

    利用itext操作pdf从数据库导出大量数据

    本篇文章将详细介绍如何利用iText库操作PDF,从数据库中导出大量数据。 首先,我们需要理解iText的基本概念和功能。iText提供了丰富的API,可以用于创建新的PDF文档、添加文本、图像、表格、链接等元素,以及对已有...

    使用ITEXT导出PDF、WORD,APACHE POI导出EXCEL报表文件

    本文将深入探讨如何使用ITEXT库导出PDF和Word,以及利用Apache POI库导出Excel报表文件。 首先,让我们来了解ITEXT库。ITEXT是一个开源Java库,专门用于创建和修改PDF文档。使用ITEXT,你可以方便地生成包含文本、...

    itextpdf按模版导出PDF(表单,表格,条码,二维码)

    **ITextPDF库在Java中的应用:创建模板化的PDF文档** `iTextPDF`是一个流行的开源Java库,用于创建、编辑和操作PDF文档。在这个场景中,我们将探讨如何使用iTextPDF来根据模板生成包含表单、表格、条形码和二维码的...

    itext 导出pdf 例子

    本示例将深入讲解如何利用iText库来导出PDF文件,以满足特定的需求。 首先,确保已将iText库添加到项目依赖中。通常,可以通过Maven或Gradle来引入。对于Maven项目,可以在pom.xml文件中添加以下依赖: ```xml ...

    c# winform Itext 实现PDF导出简单demo

    这个简单的demo展示了如何利用Itext库将数据导出为PDF格式,非常适合初学者理解和实践。下面,我们将深入探讨这个知识点,以及如何一步步实现这个功能。 首先,你需要在你的项目中引入ItextSharp库。ItextSharp是...

    JAVA ITEXT 导出试卷

    本项目名为“JAVA ITEXT 导出试卷”,其核心功能是使用Java和iText库来自动化生成PDF格式的试卷。 首先,我们需要了解iText库的基本用法。iText提供了许多API,允许开发者添加文本、图像、表格、链接等元素到PDF文...

    itext导出HTML到PDF的换行和解决中文包(配套三个)

    在这个特定的场景下,我们关注的是如何使用iText将HTML内容转换为PDF,并处理中文字符显示的问题。 首先,我们来探讨HTML到PDF的转换。iText本身并不直接支持HTML到PDF的转换,但通过其内部的XMLWorker工具,可以...

    解决Itext生成PDF中文不换行的jar

    为了解决"Java使用Itext生成PDF中文不换行"的问题,我们可以采取以下几种策略: 1. **设置字体和编码**:确保使用支持中文的字体,如SimSun、Arial Unicode MS等,并正确设置PDF的编码为UTF-8。Itext中的`Font`类...

    java itext导出PDF github

    根据所提供的标题“java itext导出PDF github”以及描述“导出PDF例子,供网友参考”,我们可以推测该文档主要介绍如何利用Java编程语言结合iText库来创建PDF文件。iText是一款非常强大的用于生成和操作PDF文件的开源...

    Struts2+IText动态导出PDF示例源码

    在这个"Struts2+IText动态导出PDF示例源码"项目中,开发者利用这两者结合,实现了在Web应用中动态生成PDF文件的功能。这在报表生成、合同制作、证书打印等场景中非常实用。 首先,Struts2作为控制器层框架,负责...

    Android使用iText生成pdf并读取pdf内容

    在Android平台上,生成和读取PDF文件是一项常见的需求,特别是在数据导出、报告生成或文档共享等场景。iText是一个强大的开源库,它允许开发者在Java和.NET环境中创建、编辑和处理PDF文档。在这个场景中,我们将探讨...

Global site tag (gtag.js) - Google Analytics