我正在使用iText 7
库(v7.0.5.0)。我在RadDiagram
的.Net
(Telerik库)中创建了一个PDF文件(A-1B一致性)。
生成PDF文件时,在其属性(Acrobat Reader>文件>属性>字体)中,文件中有很多带字体,但只有4种主字体,带有变体(Arial,Segoe,Tahoma,TimesNewRoman)。
我可以看到有很多具有相同名称的重复字体。
如果我将文件从Acrobat Reader保存为“缩小的PDF文件”,则会清除所有重复的字体,以便每个字体名称只保留1个字体。
我搜索解决方案以编程方式删除这些重复的字体,因为这些重复的字体显着增加了PDF文件的大小。使用Acrobat Reader压缩,文件大小从2,2 Mo减少到90 6 Ko(没有质量损失)。
你可以找到here我的PDF文件的一个例子。
这个文件有:
这是一个例子,但有时,我的文件非常大,例如,压缩将大小从16 Mo减小到1 Mo,因为有很多重复的字体。
[编辑]关于我的用例:
从RadDiagram
Telerik对象,我将它们导出为PDF文件,如图像。此PDF文件(只有1页)被序列化为Bytes()
并保存到数据库中。在特定步骤中,所有序列化PDF都连接成全局PDF文件。显然,问题在于我保存每个PDF文件,因为在每次创建时,我都会调用以下代码:
_pdfFont = PdfFontFactory.CreateFont(FONT_PATH_ARIAL, PdfEncodings.IDENTITY_H, True)
声明:
Private Const FONT_PATH_ARIAL As String = "c:\windows\fonts\Arial.ttf"
Private _pdfFont As PdfFont
在每个_pdfFont
方法中调用SetFont()
对象。
但创建步骤很重要,因为当我关闭de Document对象时,这个人需要知道我只为它创建的字体。
最后,这是相同的字体(它们具有相同的名称),但每个字体都没有合并,因此它们被添加到全局PDF文件中。
[结束编辑]
非常感谢。
最后,我找到了另一种保存PDF文件的方法。
现在,我没有将它们保存到数据库中,我只使用1个PDF文件,并且我使用PDF字体的字典重新使用它们而不是声明多个时间字体,所以不要增加数字使用的字体(即使这是“相同”字体(与另一个子集))。