最近一个项目需要导出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,中文不显示字体,在body上设置font-family: "Arial Unicode MS",同时在java中引入fontResolver.addFont("/ARIALUNI.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); 就可以显示中文了
java使用iText导出PDF文本绝对定位(实现方法) iText是一个流行的Java类库,用于生成PDF文档。下面我们将探讨如何使用iText在Java中导出PDF文本,并实现绝对定位。 iText简介 iText是一个开源的Java类库,用于...
iTextPDF是一个Java库,专门用于创建、编辑和处理PDF文档,而`iText-asian-5.2.0.jar`和`itextpdf-5.5.5.jar`是iText库的不同版本,用于支持中文字符和其他亚洲语言。 1. **iTextPDF**: iTextPDF是iText项目的一...
总结起来,"Velocity+Itext导出PDF"是一种高效且灵活的方式,可以将动态数据和预定义的模板结合,生成高质量的PDF文档。通过熟练掌握这两个工具的使用,开发者可以创建出满足各种需求的PDF文档生成系统。
"iText导出pdf不显示中文 ITextRenderer不显示中文"这个问题,通常是由于字体配置不当或者缺失支持中文的字体资源导致的。下面我们将深入探讨这个问题及其解决方案。 首先,我们需要理解iText的工作原理。iText创建...
本文将介绍一个使用iText库导出PDF的小例子。 首先,介绍iText库的基本知识。iText是一个开源的Java库,允许开发者创建和操纵PDF文档。它包括生成PDF文件、合并或分割现有PDF文件、添加文本或图像等功能。iText广泛...
在标题中提到的"itext导出PDF所需jar包"是指使用iText库来生成PDF文件时所需的Java类库。iText允许开发者通过编程方式生成高质量的PDF文档,包括文本、图像、表格、链接等多种元素,适用于各种业务场景,如报表生成...
Java使用IText库导出PDF是一项常见的任务,特别是在需要生成报告、文档或发票等静态内容时。IText是一个强大的PDF库,它允许开发者在Java环境中创建、修改和处理PDF文档。下面将详细介绍如何使用IText库来实现这个...
本篇文章将详细介绍如何利用iText库操作PDF,从数据库中导出大量数据。 首先,我们需要理解iText的基本概念和功能。iText提供了丰富的API,可以用于创建新的PDF文档、添加文本、图像、表格、链接等元素,以及对已有...
本文将深入探讨如何使用ITEXT库导出PDF和Word,以及利用Apache POI库导出Excel报表文件。 首先,让我们来了解ITEXT库。ITEXT是一个开源Java库,专门用于创建和修改PDF文档。使用ITEXT,你可以方便地生成包含文本、...
**ITextPDF库在Java中的应用:创建模板化的PDF文档** `iTextPDF`是一个流行的开源Java库,用于创建、编辑和操作PDF文档。在这个场景中,我们将探讨如何使用iTextPDF来根据模板生成包含表单、表格、条形码和二维码的...
本示例将深入讲解如何利用iText库来导出PDF文件,以满足特定的需求。 首先,确保已将iText库添加到项目依赖中。通常,可以通过Maven或Gradle来引入。对于Maven项目,可以在pom.xml文件中添加以下依赖: ```xml ...
这个简单的demo展示了如何利用Itext库将数据导出为PDF格式,非常适合初学者理解和实践。下面,我们将深入探讨这个知识点,以及如何一步步实现这个功能。 首先,你需要在你的项目中引入ItextSharp库。ItextSharp是...
本项目名为“JAVA ITEXT 导出试卷”,其核心功能是使用Java和iText库来自动化生成PDF格式的试卷。 首先,我们需要了解iText库的基本用法。iText提供了许多API,允许开发者添加文本、图像、表格、链接等元素到PDF文...
在这个特定的场景下,我们关注的是如何使用iText将HTML内容转换为PDF,并处理中文字符显示的问题。 首先,我们来探讨HTML到PDF的转换。iText本身并不直接支持HTML到PDF的转换,但通过其内部的XMLWorker工具,可以...
为了解决"Java使用Itext生成PDF中文不换行"的问题,我们可以采取以下几种策略: 1. **设置字体和编码**:确保使用支持中文的字体,如SimSun、Arial Unicode MS等,并正确设置PDF的编码为UTF-8。Itext中的`Font`类...
根据所提供的标题“java itext导出PDF github”以及描述“导出PDF例子,供网友参考”,我们可以推测该文档主要介绍如何利用Java编程语言结合iText库来创建PDF文件。iText是一款非常强大的用于生成和操作PDF文件的开源...
在这个"Struts2+IText动态导出PDF示例源码"项目中,开发者利用这两者结合,实现了在Web应用中动态生成PDF文件的功能。这在报表生成、合同制作、证书打印等场景中非常实用。 首先,Struts2作为控制器层框架,负责...
在Android平台上,生成和读取PDF文件是一项常见的需求,特别是在数据导出、报告生成或文档共享等场景。iText是一个强大的开源库,它允许开发者在Java和.NET环境中创建、编辑和处理PDF文档。在这个场景中,我们将探讨...