为什么用ITEXT生成含汉字的pdf总是不成功,已下载itextasian.jar,并设置了CLASSPATH

yyttrr2006 2007-08-02 11:33:57
E:\>javac pp.java

E:\>java pp
null

源码如下

import java.io.*;
import java.io.IOException;
import java.io.FileOutputStream;
import java.lang.*;
import java.lang.String;
import java.util.*;
import java.text.*;
import java.awt.Color;
import com.lowagie.text.*;
import com.lowagie.text.pdf.PdfWriter;
import com.lowagie.text.PageSize;
import com.lowagie.text.Document;
import com.lowagie.text.pdf.ColumnText;
import com.lowagie.text.Phrase;
import com.lowagie.text.Font;
import com.lowagie.text.FontFactory;
import com.lowagie.text.Rectangle;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Element;
import com.lowagie.text.pdf.PdfPageEventHelper;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.DocumentException;
import com.lowagie.text.ExceptionConverter;
import com.lowagie.text.Image;


public class pp extends PdfPageEventHelper
{
public static void main(String[] args) throws Exception
{
Document document = new Document(PageSize.A4, 20, 20, 90, 30);
try
{
PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream("aa.pdf"));
writer.setViewerPreferences(PdfWriter.PageModeUseOutlines);
writer.setPageEvent(new pdf());
document.open();
BaseFont bfChinese = BaseFont.createFont("STSong-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font FontChinese = new Font(bfChinese,12,Font.NORMAL);
Paragraph chunk = new Paragraph("我们是害虫", FontChinese);
document.add(chunk);
document.close();
}catch (Exception e) {System.out.println(e.getMessage());}
}
}
...全文
920 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangjiamr 2011-11-21
  • 打赏
  • 举报
回复
打开BaseFont类你会发现
public static final String RESOURCE_PATH = "com/itextpdf/text/pdf/fonts/";
但是在iTextAsian.jar里你会发现 iTextAsian的包名是 "com.itextpdf.text.pdf.fonts"程序在加载的过程中会根据 RESOURCE_PATH的路径去寻找下面的peoperties文件,它的font和encoding文件都是从String RESOURCE_PATH = "com/itextpdf/text/pdf/fonts/"; 这里加载的,而老itextasian.jar的包名是com.lowagie.text.pdf.fonts, 应该是包名重新命名了, 而没有及时更新itextasian.jar, 改了一下itextasian.jar包路径, 重新运行程序, OK, 搞定.
更改iTextAsian.jar包名的方法如下
1)使用winrar解压缩程序将原来的iTextAsian.jar解压,目录结构如下
iTextAsian
--com
--lowagie
--text
--pdf
--fonts
--...(字体属性文件)
2)将加压后com目录下的包名lowagie更改为itextpdf
3)在命令行转至iTextAsian目录,重新打包为iTextAsian.jar文件
命令如下:
jar cvf iTextAsian.jar .
yingti_anxia 2011-03-08
  • 打赏
  • 举报
回复
我也遇到了这个问题,pdf中不知道该怎么样插入中文汉字?yyttrr2006你解决这个问题了么?给我讲讲吧,QQ:724380361
woshirenzha 2007-12-24
  • 打赏
  • 举报
回复
请问,如果是要读取日文的pdf,怎么实现呢?用pdfbox怎么实现呢?或者用itext(亚洲)怎么实现呢?
yyttrr2006 2007-08-07
  • 打赏
  • 举报
回复
UP
yyttrr2006 2007-08-03
  • 打赏
  • 举报
回复
//writer.setPageEvent(new pdf());
=================================
跟这个没关系
yyttrr2006 2007-08-02
  • 打赏
  • 举报
回复
谢谢不过我没有找到你说SIMYOU.TTF

C:\WINDOWS\Fonts>dir s*.ttf
Volume in drive C has no label.
Volume Serial Number is 4CDE-FFB0

Directory of C:\WINDOWS\Fonts

1999-03-17 15:07 168,756 SCHLBKB.TTF
1999-03-17 15:07 160,964 SCHLBKBI.TTF
1999-03-17 15:07 163,164 SCHLBKI.TTF
1999-06-24 09:33 55,500 SCRIPTBL.TTF
2004-08-04 20:00 234,280 shruti.ttf
2004-08-04 20:00 10,044,356 simhei.ttf
2004-08-04 20:00 221,676 sylfaen.ttf
2004-08-04 20:00 69,464 symbol.ttf
8 File(s) 11,118,160 bytes
0 Dir(s) 15,229,747,200 bytes free

C:\WINDOWS\Fonts>cd /

C:\WINDOWS\Fonts>cd \

C:\>dir sim*.ttf /a/s
Volume in drive C has no label.
Volume Serial Number is 4CDE-FFB0

Directory of C:\WINDOWS\Fonts

2004-08-04 20:00 10,044,356 simhei.ttf
1 File(s) 10,044,356 bytes

Total Files Listed:
1 File(s) 10,044,356 bytes
0 Dir(s) 15,229,747,200 bytes free
zhengjing01 2007-08-02
  • 打赏
  • 举报
回复
呵呵!!因为你要加载windows里面的汉字包
如:

 BaseFont bfChinese = BaseFont.createFont("../webapps/CMCS3.1/business/overDraft/SIMYOU.TTF", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
com.lowagie.text.Font FontChinese = new com.lowagie.text.Font(bfChinese, 12, com.lowagie.text.Font.NORMAL);

SIMYOU.TTF这个文件在windows的系统目录中可以找到的,
buctreny 2007-08-02
  • 打赏
  • 举报
回复
//writer.setPageEvent(new pdf());
找不到pdf类,所以将此句引掉。
然后执行,能够正确地生成aa.pdf。
我的环境运行环境是:jdk1.5.0。是不是jdk版本问题?

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧