java相关,关于使用itext导出pdf后,中文字体设置的问题。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java相关,关于使用itext导出pdf后,中文字体设置的问题。相关的知识,希望对你有一定的参考价值。

我使用itext导出pdf后,想把字体设置为方正小标宋,但是这个iTextAsian.jar中文貌似只支持STSong(std)-Light这种,涉及到的简体中文编码集也是UniGB-UCS2-H,并不支持方针这种字体。
如何把方正这种字体和对应的编码集导入进去,或者说是否可以自己编写那个properties,求高手指教。若能解决还可加分。

可以直接调用字体 写一个
BaseFont bf=BaseFont.createFont("字体",BaseFont.CP1250, BaseFont.EMBEDDED);
字体就设置,你的那个字体路径追问

BaseFont ttChinese=BaseFont.createFont("C:\\Windows\\Fonts\\微软雅黑",BaseFont.CP1250, BaseFont.EMBEDDED);
我写完这个后,系统报一个错误:com.lowagie.text.DocumentException: Font 'C:\Windows\Fonts\微软雅黑' with 'Cp1250' is not recognized.
是Cp1250不支持微软雅黑的意思么?

追答

抱歉 一个地方说错了
BaseFont ttChinese=BaseFont.createFont("F://MSYHBD.TTF",BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font f=new Font(ttChinese);
Paragraph p = new Paragraph();
p.setFont(f);
p.add("你 好 David!");
字体要找对应的字体文件,BaseFont.IDENTITY_H 这个东西我忘了是什么了?好像只有这种编码方式,这样才能支持。BaseFont.EMBEDDED 表示字体是否嵌入PDF

参考技术A 这个我以前遇到过,看看对你有没有帮助
1.将字符编码文件复制到系统字符集下面一份(好像是ttf)结尾的吧,因为有的系统有可能不带该字符集
2.将字符集放到java程序运行的根目录下,比如如果是webapp,那就放在WEB-INF/classes下
3.编辑模板文件的时候选择的字符好像是U什么开头的,我给忘了(反正不是特殊的),或者需要把字体导入到编辑器里(有这个选项),具体记不清楚了。追问

请问这个编辑模版文件在哪里?是不是应该我自己创建的properties?
以下是STSong-Light.properties的内容,应该咋修改啊。
Flags=6
FontBBox=[-25 -254 1000 880]
ItalicAngle=0
Ascent=880
Descent=-120
CapHeight=880
StemV=93
Panose=\u0001\......
Registry=Adobe
Ordering=GB1
Supplement=4
W=1 207 2 270 ......
W2=
另外能不能详细说说导入编辑器这个操作?

追答

能不能把你的问题这样描述一下?
1.功能描述
2.实现过程
3.存在的问题
这样的话才好解决

参考技术B BaseFont bf=BaseFont.createFont("字体",BaseFont.CP1250, BaseFont.NOT_EMBEDDED);BaseFont.EMBEDDED处应写成BaseFont.NOT_EMBEDDED。

以上是关于java相关,关于使用itext导出pdf后,中文字体设置的问题。的主要内容,如果未能解决你的问题,请参考以下文章

有关Java导出pdf的功能

Java利用itext实现导出PDF文件

Java利用itext实现导出PDF文件

java怎么输出pdf格式的文件

一次java导出pdf的经历

关于java中用itext导出word的一点想法