【问题标题】:Checkbox character in iTextiText中的复选框字符
【发布时间】:2012-07-23 18:13:22
【问题描述】:

我正在尝试像这样在我的 pdf 中插入一个复选框字符:

Phrase phrase = new Phrase("\u2610 somemoretext", somefont);

字符串的“somemoretext”部分显示正确,复选框字符未正确显示。我是否必须为此角色使用特定的字体,否则我可能做错了什么?

【问题讨论】:

    标签: java itext


    【解决方案1】:

    您必须使用包含这些字符的字体和编码。最好的办法是使用 IDENTITY_H 进行编码,因为这可以让您访问给定字体中的每个字符:

    Font font = FontFactory.getFont(f.getName(),BaseFont.IDENTITY_H);

    但您仍然必须使用正确的字体。 This 链接也可以证明对你有帮助

    编辑:

    我还看到不同的Fonts 使用不同的转换代码/序列:

    使用不同字体的对应字符。例如在 Wingdings.ttf 你有 0x6F 和 0x70

    【讨论】:

    • @sMaN 根据文档,第一个参数是String,它是字体系列的名称,即getFont(FontFactory.HELVETICA,13),其中FontFactory.HELVETICA 是字体系列名称,13 是字体的大小字体。阅读他们将帮助您了解方法等必要参数的文档。另一个例子是FontFactory.getFont("Arial", 8, Font.ITALIC)
    • 所以在给定的示例中,变量 'f' 是 Font 的一个实例,因此 f.getName() 返回字体名称的字符串表示形式。我只是在示例中的任何地方都看不到变量 f 定义或实例化。谢谢。
    【解决方案2】:
    var font = FontFactory.GetFont(@"C:\Windows\Fonts\wingding.ttf", BaseFont.CP1252, true, 12);
    Phrase phrase = new Phrase("\xFC somemoretext", font);
    

    灵感来自 https://stackoverflow.com/a/5044017/1021364

    人物地图

    检查:FB

    打勾:FC

    勾选复选框:FD

    勾选复选框:FE

    空复选框:6F

    【讨论】:

    • 虽然操作员没有提到他在 Windows 上工作,因此 WinDings 不一定可用,但查找包含所需字符的字体的通用提示是适用的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多