• itext生成pdf如何使用windows系统下的各种字体


    一、首先是,使用windows字体的正常方式。

        @Test
        /**
         * 使用windows系统下的字体,new Font方式
         */
        public void test1_1() throws DocumentException, IOException {
            String path = "C:/WINDOWS/Fonts/simhei.ttf";//windows里的字体资源路径
            BaseFont bf = BaseFont.createFont(path, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            Font font = new Font(bf, 10f, Font.NORMAL, BaseColor.BLACK);
            createPdf(font);
        }
    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。

    二、如何准确的找到windows下的字体
    首先去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.

    就算这个世道烂成一堆粪坑,那也不是你吃屎的理由
  • 相关阅读:
    浅谈系统调用与库函数
    由代码到可执行程序----浅谈程序的编译链接
    初识信号---进程间的交流
    内部排序总结之----选择类排序(选择、堆)
    僵死进程
    父子进程那些事儿
    fok函数
    面试-css样式
    面试-javascript知识
    面试--数据库
  • 原文地址:https://www.cnblogs.com/whalesea/p/11714681.html
Copyright © 2020-2023  润新知