如何对 pdf 中使用的字体进行子集化? (使用 iTextSharp)
我使用 ASP.NET + iTextSharp 生成了一份 pdf 报告。
我在其中使用了几种类型的字体,出于艺术原因,每种字体都应用于一个或两个单词。
所以文件很大。
如何只嵌入我实际使用的字体?就像我们对 MS Office 选项所做的那样。
MS Office Word 2007 是这样的:
“在文件中嵌入字体:
仅嵌入文档中使用的字符(最适合减小文件大小)
不要嵌入常见的系统字体”
或者我也可以接受另一种解决方案。
将整个页面拼合为高分辨率图片。
如果编程方便的话,我其实更喜欢这个方案。
谢谢。
I generated a pdf report with ASP.NET + iTextSharp.
I used several types of fonts in it, each font applied to a word or 2 for art reasons.
So the file is large.
How can I only embed the fonts I actually used? Just like what we do with MS Office Options.
MS Office Word 2007 is like this:
"Embed fonts in the file:
Embed only the characters used in the document(best for reducing file size)
Do not embed common system fonts"
OR I can also accept another kind of solution.
Flatten the whole page to a high-resolution picture.
If the programming is convenient, I actually prefer this solution.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
创建启用嵌入的
BaseFont
实例时,您需要调用myBaseFont.setSubset(true)
。请注意,使用编码“Identity-H”(又名BaseFont.IDENTITY_H
),这种情况会自动发生:请注意,这都是 Java。在 C# 中,函数名称的首字母大写,
setX(newX)
和getX()
成为属性。When creating your
BaseFont
instance with embedding enabled, you need to callmyBaseFont.setSubset(true)
. Note that with the encoding "Identity-H" (AKABaseFont.IDENTITY_H
), this happens automatically:Note that this is all Java. In C# the first letter of function names are capitalized and
setX(newX)
andgetX()
become properties.