JAVA itext一行设置两种字体 我用的是生成pdf
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA itext一行设置两种字体 我用的是生成pdf相关的知识,希望对你有一定的参考价值。
在使用itext打印pdf时,如果希望一行内出现两种字体,需要注意Paragraph与Chunk 的配合使用。其中Paragraph是段落,Chunk表示块,可以理解成一个词组之类的。其中Chunk的使用非常灵活,可以实现上标、角标等效果。针对于你的问题,可参照如下代码(注意,代码是示意性的,只是一个思路,可以仿照着来写):Paragraph largeText = new Paragraph();
Chunk chunk1 = new Chunk(“第一种字体”, getFontChineseFun(ts1));
Chunk chunk2 = new Chunk(“第二种字体”, getFontChineseFun(ts2));
largeText.add(chunk1);
largeText.add(chunk2);追问
ts1是什么
追答这个是我自己封装的一个class,可以忽略,主要是理解“getFontChineseFun(ts1)”是表示用户获得字体的一个方法,你可以自己准备。
追问如何设置chunk的位置
追答通过Paragraph设置就可以了,因为chunk是需要add到Paragraph中的。
追问能给出代码吗?
参考技术A /** 新建一个字体,iText的方法* STSongStd-Light 是字体,在iTextAsian.jar 中以property为后缀
* UniGB-UCS2-H 是编码,在iTextAsian.jar 中以cmap为后缀
* H 代表文字版式是横版,相应的 V 代表竖版
*/
BaseFont bfChinese = BaseFont.createFont("STSongStd-Light",
"UniGB-UCS2-H", false);
Font fontChinese = new Font(bfChinese,12, Font.NORMAL, Color.GREEN);追问
不能用啊,字体还是一样大小
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
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.存在的问题
这样的话才好解决
以上是关于JAVA itext一行设置两种字体 我用的是生成pdf的主要内容,如果未能解决你的问题,请参考以下文章
java相关,关于使用itext导出pdf后,中文字体设置的问题。