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();
    }
    
}

 效果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM