如何对pdf中使用的字体进行子集化? (使用iTextSharp)

| 我使用ASP.NET + iTextSharp生成了pdf报告。 我在其中使用了几种类型的字体,出于艺术原因,每种字体都应用于一个或两个字。 因此文件很大。 如何仅嵌入我实际使用的字体?就像我们对MS Office Options所做的一样。 MS Office Word 2007是这样的: \“嵌入文件中的字体: 仅嵌入文档中使用的字符(最好减小文件大小) 不要嵌入通用系统字体\“ 或者,我也可以接受另一种解决方案。 将整个页面展平为高分辨率图片。 如果编程方便,我实际上更喜欢这种解决方案。 谢谢。     
已邀请:
创建启用了嵌入的“ 0”实例时,需要调用“ 1”。请注意,使用编码\“ Identity-H \”(也称为
BaseFont.IDENTITY_H
),这会自动发生:
// find all fonts in the usual places across multiple OSs.
// This can be pretty slow if you have a large number fonts, or the fonts
// themselves are Really Big (ArialUnicodeMS: 23mb).
FontFactory.registerDirectories();

// here\'s one way to do it, using identity-h forces subsetting
Font myFontSubset1 = FontFactory.getFont(fontName1, BaseFont.IDENTITY_H);

// here\'s another, explicitly enable subsetting for the underlying BaseFont.
Font myFontSubset2 = FontFactory.getFont(fontName2, FontFactory.defaultEncoding, true);
myFontSubset2.getBaseFont().setSubset(true);

//or you can create the BaseFont yourself, with automagic subsetting
BaseFont myFontSubset3 = BaseFont.createFont(fontPath, BaseFont.IDENTITY_H);

// or create it with some other encoding, and enable subsetting.
BaseFont myFontSubset4 = BaseFont.createFont(fontPath, BaseFont.WINANSI, true);
myFontSubset4.setSubset(true);
请注意,所有这些都是Java。在C#中,函数名称的首字母大写,并且
setX(newX)
getX()
成为属性。     

要回复问题请先登录注册