itext7 List序号 有序列表 解决中文不显示

注意:1.itextpdf的版本为7.0.5(7.1.4的版本过高,用本示例会报错(比如7.0.5是这个包是com.itextpdf.kernel.color.Color,在7.1.4会升级为com.itextpdf.kernel.colors.Color);  7.0.0的版本低,  也会报错。)

2.jdk要在1.7及以上

3.maven版本也不要太低了(推荐3.3)

4.本文根据官方例子(https://itextpdf.com/en/resources/examples/itext-7/page-events-watermarking)改编,支持文字中文

package com.test;

import java.io.File;
import com.itextpdf.kernel.events.PdfDocumentEvent;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.List;
import com.itextpdf.layout.element.ListItem;
import com.itextpdf.layout.property.ListNumberingType;

/**
 * pdf List 有序列表
 * @author 鲲鹏展翅
 * @date 2019年1月22日 下午3:08:14
 * @desc 
 */
public class Pdf {
    public static final String DEST = "E:\bbb\有序列表.pdf";
    public static PdfFont watermark = null;
    
    public static void main(String[] args) throws Exception {
        watermark = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H", false);//解决中文不显示
        // itext7需要jdk7及以上 jdk6就用itext5
        File dest = new File(DEST);
        dest.getParentFile().mkdirs();
        createPdf(DEST);
    }
    
    public static void createPdf(String dest) throws Exception {
        PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
        pdf.addEventHandler(PdfDocumentEvent.END_PAGE, new MyEventHandler());
        Document document = new Document(pdf);

        List list = new List().setSymbolIndent(9)
                .setListSymbol(ListNumberingType.DECIMAL)//有序列表
                //.setListSymbol("u2022")//自定义无序列表
                .setFont(watermark);
        list.add(new ListItem("第一条。"))
                .add(new ListItem("第二条。"));
        document.add(list);

        document.close();
    }
    
}

 效果

原文地址:https://www.cnblogs.com/zjk1/p/10304028.html