我被要求将部分字体包含在pdf中。 我想我会使用iText,我发现如何嵌入字体,但我发现没有关于部分嵌入的线索。
有人知道部分嵌入是否是自动的?或者iText可能没有此功能?
谢谢。
答案 0 :(得分:2)
iText何时嵌入完整字体,子集或无字体?
在这个答案中,假设您使用BaseFont
类和Font
类,如下所示:
BaseFont bf = BaseFont.createFont(pathToFont, encoding, embedded);
Font font = new Font(bf, 12);
在此片段中:
pathToFont
是字体文件的路径(.ttf,.ttc,otf,.afm),encoding
是一种编码,例如“winansi”,BaseFont.IDENTITY_H,...... embedded
是布尔值:true
或false
。iText是否会嵌入字体?
由embedded
参数决定:
false
,则不会嵌入字体。true
,则嵌入字体,标准类型1字体或类型1字体除之外的缺少.pfb文件或CJK字体。关于例外情况:
.ttf
,.otf
或.ttc
文件中的亚洲字体。iText是否会对字体进行子集化?
如果您提供Type 1字体(AFM和PFB文件),iText将始终尝试嵌入字体的子集,而不是整个字体,除。如果提供了Type 1字体,则嵌入完整字体。
iText可以嵌入完整的字体吗?
是的,您可以通过添加以下行来强制iText嵌入完整字体:
bf.setSubset(false);
但是,如果您使用编码Identity-H
,则会忽略此值,因为这是ISO-32000-1中描述的方式。 iText只会将存储在PDF中的完整字体嵌入为简单字体(256个字符); iText永远不会嵌入存储为复合字体的字体(最多65,535个字符)。