首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将粗体设置为iTextPDF中的自定义字体

将粗体设置为iTextPDF中的自定义字体
EN

Stack Overflow用户
提问于 2015-12-21 13:14:52
回答 1查看 3.5K关注 0票数 0

我需要使用特定的字体来制作文档,因为它包含一些特殊字符,如"Đ",而这些字符不受普通字体iText的支持。

所以,我做了这个:

代码语言:javascript
复制
BaseFont CROACIA = BaseFont.createFont("C:\\FreeSans.ttf",BaseFont.IDENTITY_H,BaseFont.EMBEDDED);

Font CROATA = new Font(CROACIA, 12);

它工作得很好,我的"Đ"问题解决了,问题是我不能把它设为大胆。

我试着用“粗体”设置做一个不同的字体,比如this_。

代码语言:javascript
复制
Font CROATABOLD = new Font(CROACIA, 12, BOLD);

代码似乎并没有错误,但是当我将它应用于一个段落时,它只是不起作用,字体看起来和往常一样正常。

EN

回答 1

Stack Overflow用户

发布于 2015-12-21 14:06:51

FreeSans和FreeSansBold是同一家族的不同字体。您提供了FreeSans.ttf字体程序的路径,因此iText可以在FreeSans系列中使用常规字体。如果要使用粗体字体,则需要为同一家族中的字体提供一个FreeSansBold.ttf路径,这是一个不同的字体程序。

FreeSansBold示例中显示了这一点:

代码语言:javascript
复制
public static final String FONT = "resources/fonts/FreeSans.ttf";
public static final String FONTBOLD = "resources/fonts/FreeSansBold.ttf";

public void createPdf(String dest) throws IOException, DocumentException {
    Document document = new Document();
    PdfWriter.getInstance(document, new FileOutputStream(dest));
    document.open();
    BaseFont bf = BaseFont.createFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    Font font = new Font(bf, 12);
    Paragraph p = new Paragraph("FreeSans regular: \u0110", font);
    document.add(p);
    BaseFont bfbold = BaseFont.createFont(FONTBOLD, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    Font bold = new Font(bfbold, 12);
    p = new Paragraph("FreeSans bold: \u0110", bold);
    document.add(p);
    document.close();
}

我们有两个不同的字体FreeSans.ttfFreeSansBold.ttf属于同一家族。一种是普通字体,另一种是粗体字体。如果查看结果的文档属性bold.pdf,可以清楚地看到有两种不同的字体在发挥作用:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34396579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档