六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 126|回复: 0

itext实现pdf套打_循序渐进

[复制链接]

升级  56%

6

主题

6

主题

6

主题

童生

Rank: 1

积分
28
 楼主| 发表于 2013-2-7 19:30:49 | 显示全部楼层 |阅读模式
1,刚开始用itext.jar,出错java.lang.NoClassDefFoundErrorcom.lowagie.text.pdf.PdfReader,
出错行:
PdfReader reader = new PdfReader(TemplatePDF);
然后换成最新jar包iText-2.1.5.jar,错误去除。
itext官网 http://www.lowagie.com/iText/

2,关于中文支持BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); Font FontChinese = new Font(bf, 12, Font.NORMAL);
需要iTextAsian.jar,下载位置:http://prdownloads.sourceforge.net/itext/iTextAsian.jar

3,servlet接收不到post的表单数据:
<form name="appForm" method="post" ENCTYPE="multipart/form-data">,
原因在于ENCTYPE,enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据;enctype=\"multipart/form-data\"是上传二进制数据; form里面的input的值以2进制的方式传过去,所以这里request就得不到值了,也就是说加了这段代码,用request就会传递不成功。

4,form.setFieldProperty问题。
BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);Font FontChinese = new Font(bf, 12, Font.NORMAL);AcroFields form = stamp.getAcroFields();form.setFieldProperty("shipName","textfont",FontChinese,null);

这里报错是:
java.lang.ClassCastException: com.lowagie.text.Font
at com.lowagie.text.pdf.AcroFields.setFieldProperty(Unknown Source)

原因是:public boolean (String s, String s1, Object obj, int ai[])这里的setFieldProperty第三个参数只能是BaseFont,而不可以是Font.也就是说textfont,需要的是一个BaseFont.
请参照:http://www.nabble.com/Setting-font-on-Acroform-td11007173.html
[url=http://www.cs.bris.ac.uk/maintain/itext/com/lowagie/text/pdf/AcroFields.html#setFieldProperty(java.lang.String,%20java.lang.String,%20int,%20int[])]http://www.cs.bris.ac.uk/maintain/itext/com/lowagie/text/pdf/AcroFields.html#setFieldProperty(java.lang.String,%20java.lang.String,%20int,%20int[])[/url]
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表