一、首先是,使用windows字体的正常方式。
BaseFont bf = BaseFont.createFont("C:/WINDOWS/Fonts/simhei.ttf", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
知识兔createFont(String name, String encoding, boolean embedded),
1、name参数是字体路径,该字体是黑体常规,如图:
2、encoding,是字体的编码方式,BaseFont.IDENTITY_H在源码中的意思是:带有垂直书写的Unicode编码,源码解释如下:
/** The Unicode encoding with horizontal writing.
*/
public static final String IDENTITY_H = "Identity-H";
知识兔3、embedded,是个boolean值,如果字体要嵌入到PDF中,则为true。
二、使用指定字体的方式首先去C:/WINDOWS/Fonts,这个文件夹下来选择想要使用的字体,例如,使用楷体 常规字体,:
1、右键打开属性,会看到文件名,如图:
2、复制文件名到代码中,即可使用。
另外,需要注意的几点是:
1、有些字体是文件夹,需要打开后才能查看属性,如图:
2、有些字体文件后缀名为ttc,是需要多选的,代码如下:
BaseFont bf = BaseFont.createFont("C:/WINDOWS/Fonts/simsun.ttc,0", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);
知识兔数字是它有取决于他有几个可选项,从0开始。
可以打开文件后,通过下一步来查看:
如果数字写错,也可以通过报错信息查看它的范围:
Exception in thread "main" com.itextpdf.text.DocumentException: The font index for C:/WINDOWS/Fonts/simsun.ttc must be between 0 and 1. It was 3.
at com.itextpdf.text.pdf.TrueTypeFont.process(TrueTypeFont.java:656)
at com.itextpdf.text.pdf.TrueTypeFontUnicode.process(TrueTypeFontUnicode.java:122)
at com.itextpdf.text.pdf.TrueTypeFontUnicode.<init>(TrueTypeFontUnicode.java:99)
at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:706)
at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:626)
at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:461)
at pdf.Pdf556Custom.main(Pdf556Custom.java:21)
知识兔,它会提示你,只能在0和1中选择,不能选择3.