Java 在未设置的android字体上使用iText

Java 在未设置的android字体上使用iText,java,android,fonts,itext,Java,Android,Fonts,Itext,我使用iText在android中创建PDF,除了段落中的字体外,所有内容都可以使用,表格中的字体也可以使用 我声明这样的字体 Font titleFont = FontFactory.getFont(FontFactory.HELVETICA_BOLD,18); //create title Paragraph p1 = new Paragraph("Title"); p1.setAlignment(Paragraph.ALIGN_LEFT); p1.set

我使用iText在android中创建PDF,除了段落中的字体外,所有内容都可以使用,表格中的字体也可以使用

我声明这样的字体

 Font titleFont = FontFactory.getFont(FontFactory.HELVETICA_BOLD,18);
    //create title
    Paragraph p1 = new Paragraph("Title");
    p1.setAlignment(Paragraph.ALIGN_LEFT);
    p1.setFont(titleFont);
    //add title to document
    document.add(p1);
    Font paraFont = FontFactory.getFont(FontFactory.HELVETICA,14);

    Paragraph p = new Paragraph(format.format(cal.getTime()));
    p.setAlignment(Element.ALIGN_LEFT);
    p.setFont(paraFont);
    cell.addElement(p);
把它设置成这样

 Font titleFont = FontFactory.getFont(FontFactory.HELVETICA_BOLD,18);
    //create title
    Paragraph p1 = new Paragraph("Title");
    p1.setAlignment(Paragraph.ALIGN_LEFT);
    p1.setFont(titleFont);
    //add title to document
    document.add(p1);
    Font paraFont = FontFactory.getFont(FontFactory.HELVETICA,14);

    Paragraph p = new Paragraph(format.format(cal.getTime()));
    p.setAlignment(Element.ALIGN_LEFT);
    p.setFont(paraFont);
    cell.addElement(p);
但是我最终得到了默认大小为12的默认helvetica,同样,如果我对表中的一个元素做了同样的操作,字体也会像这样工作

 Font titleFont = FontFactory.getFont(FontFactory.HELVETICA_BOLD,18);
    //create title
    Paragraph p1 = new Paragraph("Title");
    p1.setAlignment(Paragraph.ALIGN_LEFT);
    p1.setFont(titleFont);
    //add title to document
    document.add(p1);
    Font paraFont = FontFactory.getFont(FontFactory.HELVETICA,14);

    Paragraph p = new Paragraph(format.format(cal.getTime()));
    p.setAlignment(Element.ALIGN_LEFT);
    p.setFont(paraFont);
    cell.addElement(p);
如果您这样做,任何想法都可以完美实现:

Paragraph p1 = new Paragraph("Font size 12 ");
p1.setAlignment(Paragraph.ALIGN_LEFT);
p1.setFont(titleFont);
p1.add("Font size 18");
您将注意到文本字体大小12的字体大小为12,文本字体大小18的字体大小为18。为什么?这就是iText 5和更早版本中的逻辑:字体改变时字体也会改变。即在字号12之后,字号18之前

将代码更改为:

Paragraph p1 = new Paragraph("Font size 12 ", titleFont);
p1.setAlignment(Paragraph.ALIGN_LEFT);
或者将其更改为:

Paragraph p1 = new Paragraph();
p1.setAlignment(Paragraph.ALIGN_LEFT);
p1.setFont(titleFont);
p1.add("Font size 18");

非常感谢这个非常好的答案,或者在你实例化它时设置它,或者在你制作文本之前设置它。是的,这就是一般的想法。谢谢你接受这个答案。好吧,这是一个非常晚的答复,但我只是刚刚注意到你是谁lol非常感谢你所有的辛勤工作