我的英语不好意思。
我正在尝试使用PdfPTable(iText库)创建表。
表格为我显示了空列![在此处输入图片描述] [1]

public class CreatePDF {
File file;
BaseFont bf;
Font f_title;
Font f_text;

public void setFont() throws DocumentException, IOException{
    try{
        bf = BaseFont.createFont("/fonts/Times_New_Roman.ttf", BaseFont.IDENTITY_H , BaseFont.EMBEDDED);
        f_title = new Font(bf, 14 );
        f_text = new Font(bf);
    }catch(Exception ex){
        ex.printStackTrace();
    }
}

public void make_invoice() throws DocumentException, IOException{
    setFont();
    Document doc = new Document(PageSize.A4);
    Desktop d = Desktop.getDesktop();
    try{
        file = new File("invoice.pdf");
        PdfWriter.getInstance(doc, new FileOutputStream(file));
        doc.open();
        Paragraph title = new Paragraph();
        title.setAlignment(Element.ALIGN_CENTER);
        title.setFont(f_title);
        title.add("Счет фактура");//this work!

        doc.add(create_table());

        doc.close();

    }catch(Exception ex){
        ex.printStackTrace();
    }
}

public PdfPTable create_table() throws DocumentException{
    PdfPTable table = new PdfPTable(2);
    table.setWidthPercentage(100);
    table.setSpacingBefore(5f);

    PdfPCell cell;

    Phrase ph = new Phrase("Номер");//it's doesn't work ((
    ph.setFont(f_text);

    cell = new PdfPCell(ph);
    table.addCell(cell);
    table.addCell("Nuber");

    return table;
}


我尝试使用其他字体,但对我没有帮助((((

我该如何解决这个问题?

最佳答案

使用setFont()时,可以更改设置字体后添加的所有内容的Phrase字体。更改前,"Номер"中已经存在内容Phrase。因此,"Номер"用默认字体Helvetica表示。由于Helvetica不知道如何表示西里尔字形,因此未渲染文本。

07-24 09:28