「这是我参与2022首次更文挑战的第6天,活动详情查看:2022首次更文挑战」。
生成字体
BaseFont baseFont = BaseFont.createFont(字体路径,
BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
Font font = new Font(baseFont, 9f); //宋体小五
或者
Font font= FontFactory.getFont(字体路径,BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 9, Font.NORMAL);
createFont(String name, String encoding,boolean embedded),
1、name参数是字体路径,该字体是黑体常规
2、encoding,是字体的编码方式
3、embedded,是个boolean值,如果字体要嵌入到PDF中,则为true。
动态设置字体颜色、风格、大小
如果是表格,则无效。因为表格是等所有的单元格都设置好了才开始绘制。如果第一个单元格设置好了之后,再通过下面这种方式设置。最终所有单元格的效果就是你最后一个单元格设置的效果。
font.setSize(10);
font.setStyle(Font.BOLD);
font.setColor(BaseColor.YELLOW);
字体路径的4种方式
1、依赖包中的字体
如果你导入了iTextAsian.jar包,那么可以直接使用iTextAsian.jar中的字体
BaseFont base = BaseFont.createFont("STSong-Light",
"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
2、单个字体文件放到项目使用
iText默认不支持亚洲语言,导致iText生成中文出现问题,一般都是中文内容不能出现在pdf上,这是因为没有中文字体的原因。如果你想要显示中文字体,可以通过这种方式。
如果是Java项目,直接放在根目录下
BaseFont.createFont("/simsun.ttc",
BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
如果是Android项目,可以放在assets文件夹下
BaseFont.createFont("assets/simsun.ttc",
BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
3、使用系统字体文件
BaseFont.createFont("C:/WINDOWS/Fonts/simsun.ttc",
BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
Android项目肯定不能这么干,咱没C盘
4、使用itext内置字体
注意:内置字体提供的都是英文字体
BaseFont.createFont(FontFactory.TIMES_ROMAN,
BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
Itext内置了14种字体
com.itextpdf.text.pdf
Courier是一种常见的计算机字体,由IBM公司的Bud Ketler设计,应用于IBM和其它打字机。
public static final String COURIER = "Courier";
加粗
public static final String COURIER_BOLD = "Courier-Bold";
斜体
public static final String COURIER_OBLIQUE = "Courier-Oblique";
加粗+斜体
public static final String COURIER_BOLDOBLIQUE = "Courier-BoldOblique";
Helvetica是一种被广泛使用的的西文字体,于1957年由瑞士字体设计师爱德华德·霍夫曼(Eduard Hoffmann)和马克斯·米耶丁格(Max Miedinger)设计。
Helvetica是苹果电脑的默认字体,微软Windows操作系统中常用的Arial字体与其相似,但非源自于它。
public static final String HELVETICA = "Helvetica";
public static final String HELVETICA_BOLD = "Helvetica-Bold";
public static final String HELVETICA_OBLIQUE = "Helvetica-Oblique";
public static final String HELVETICA_BOLDOBLIQUE = "Helvetica-BoldOblique";
symbol.ttf免费版字体是一款可以在文本文档中显示公式符号的字体
public static final String SYMBOL = "Symbol";
times-roman字体是一款英文字体,该字体属于过渡衬线字体,又称巴洛克体,该字体字形优美柔软,端正大方,整体效果很不错,可以广泛应用于艺术设计、网页设计、印刷、广告设计等领域,喜欢的朋友快来欧普园下载使用吧!
public static final String TIMES_ROMAN = "Times-Roman";
public static final String TIMES_BOLD = "Times-Bold";
public static final String TIMES_ITALIC = "Times-Italic";
public static final String TIMES_BOLDITALIC = "Times-BoldItalic";
public static final String ZAPFDINGBATS = "ZapfDingbats";