iText 是利用Java 来操作PDF 操作的一种开源API
简单说明下使用该API创建PDF文件的过程
PS:使用的是iText5.x版本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
/**
* 创建PDF文件
* @param filePath 文件路径
* @param content 需要写入的内容
* @throws DocumentException
* @throws IOException
*/
public void createPdf(String filePath ,String content) throws DocumentException, IOException{
Document document = new Document();
FileOutputStream fos = new FileOutputStream(filePath);
PdfWriter.getInstance(document, fos);
document.open();
Paragraph graph = new Paragraph(content);
document.add(graph);
document.close();
}
|
利用上述程序,运行结果。发现,只有英文部分被写入,中文部分无法被写入。百度得到结论:
需要加入itextasian.jar包,itextasian.jar包有实现了对中文字体的支持。因此加载itextasian.jar到classpath下。
在上述代码中加入如下代码:
1
2
3
|
BaseFont baseFontChinese = BaseFont.createFont( "STSong-Light" , "UniGB-UCS2-H" , BaseFont.NOT_EMBEDDED);
Font fontChinese = new Font(baseFontChinese , 12 , Font.NORMAL);
Paragraph graph = new Paragraph(content , fontChinese);
|
运行,得到如下异常:
Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized
还是不行,继续研究,在网上前辈们说如下原因:
iText5.x版本以上中的font和encoding文件都是从String RESOURCE_PATH = "com/itextpdf/text/pdf/fonts/"加载的,而老itextasian.jar的包名是com.lowagie.text.pdf.fonts, 包名不一致导致路径错误,。
|
具体解决方法就是修改包的路径了,详细方法如下:
1.解压iTextAsian.jar 得到如下目录: iTextAsian --com --lowagie --text --pdf --fonts --...(字体属性文件) 2.将解压后的com目录下的包名lowagie更改为itextpdf 3.在命令行转至iTextAsian目录,重新打包为iTextAsian.jar文件 4.打包命令如下: jar cvf iTextAsian.jar com/itextpdf/text/pdf/fonts/* 5.执行后,将新的iTextAsian.jar加入classpath路径 |
运行结果,OK,解决问题。
最终代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
/**
* 创建PDF文件
* @param filePath 文件路径
* @param content 需要写入的内容
* @throws DocumentException
* @throws IOException
*/
public void createPdf(String filePath ,String content) throws DocumentException, IOException{
Document document = new Document();
FileOutputStream fos = new FileOutputStream(filePath);
PdfWriter.getInstance(document, fos);
document.open();
BaseFont baseFontChinese = BaseFont.createFont( "STSong-Light" , "UniGB-UCS2-H" , BaseFont.NOT_EMBEDDED);
Font fontChinese = new Font(baseFontChinese , 12 , Font.NORMAL);
Paragraph graph = new Paragraph(content , fontChinese);
document.add(graph);
document.close();
}
|
分享到:
相关推荐
包含 itext-asian-5.2.0.jar itextpdf-5.5.5.jar
Itext导出PDF,中文不显示字体,在body上设置font-family: "Arial Unicode MS",同时在java中引入fontResolver.addFont("/ARIALUNI.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); 就可以显示中文了
NULL 博文链接:https://quicker.iteye.com/blog/548835
adobe pdf编辑器,解压安装即可使用,配合java利用itextpdf根据模板导出pdf文章中只做模板的方法;
程序使用Struts2(SSH即Struts2+Hibernate+Spring)+POI+MySQL实现Excel动态数据导入和导出,程序源码文件附带运行说明
Java生成PDF完整示例,并解决中文乱码问题, 内有生成PDF相关的三个包, iText-2.0.8.jar, iTextAsian.jar, iTextAsianCmaps.jar
itext导出pdf不显示中文 ITextRenderer不显示中文,终极解决方案!!!绝对能解决!!!
c# winform Itext 实现PDF导出简单demo,适合初学者学习
java 使用IText导出PDF(包含图片、表格、文字等等Demo和依赖包),最全IText使用Demo,下载即可用
itext 导出pdf java demo
itext java 导出pdf工具 itext java 导出pdf工具 itext java 导出pdf工具
iText生成pdf解决中文不显示字库,pdf凉字不显示,由于生成iText插件生成pdf的时候中文会显示不出来,遇到过的是"凉"字,查到是字体库的原因,网上下载字体库msyh.ttc,生成的时候指定字体库,就可以解决了,小bug一...
velocity+itext的整合导出pdf
1、解决中文问题 2、附字体 3、动态html拼接转pdf public static void htmlCodeComeString(String linkcss,String htmlCode, String outputFile,String title) throws Exception { OutputStream os = new ...
itext导出PDFitext导出PDF
itext 生成pdf的中文帮助文档,具体有:图片、块(下划线/删除线、上标/下标)、短句、段落等。
itext根据模板导出pdf,内容包括文字和图片,有任何问题,留言即可
Java使用iText PDF插件导出PDF文档时,需引入中文字体文件,并创建不同大小风格的中文字体
itextpdf+itext-asian+xmlworker 导出pdf 表格 自动分页中文 目录.rar