C# 合并PDF和ITEXTC之间的字体

C# 合并PDF和ITEXTC之间的字体,c#,pdf,optimization,itextsharp,C#,Pdf,Optimization,Itextsharp,我需要将多个PDF合并在一起。我正在使用itextsharp创建所有PDF。我需要将PDF的大小减小到可能的最小大小。我知道每个pdf的字体都是重复的。合并后的pdf是否只使用一组字体?例如,pdf1为2.8mb,pdf2为2.8mb,我将它们合并在一起,大约为5.7mb。我知道事实上,这两个pdf都使用相同的字体,但是字体的数据正在被复制,即使它在相同的pdf中 我尝试使用将压缩属性设置为最佳压缩,并设置完全压缩,这几乎没有减少大小 不过,当我通过AcrobatxPro运行pdf并对其进行优化

我需要将多个PDF合并在一起。我正在使用itextsharp创建所有PDF。我需要将PDF的大小减小到可能的最小大小。我知道每个pdf的字体都是重复的。合并后的pdf是否只使用一组字体?例如,pdf1为2.8mb,pdf2为2.8mb,我将它们合并在一起,大约为5.7mb。我知道事实上,这两个pdf都使用相同的字体,但是字体的数据正在被复制,即使它在相同的pdf中

我尝试使用将压缩属性设置为最佳压缩,并设置完全压缩,这几乎没有减少大小

不过,当我通过AcrobatxPro运行pdf并对其进行优化时,它几乎可以减少90%,从160MB减少到5MB。使用情况审计说,在优化之前,其90%的pdf是字体


现在有没有办法在合并PDF之间合并字体?

我的答案由两部分组成:

你没有告诉我们你是如何合并PDF的。希望您已经阅读了官方文档,并且正在使用PdfSmartCopy。如果不是,你就错了。PdfSmartCopy检查不同PDF的内容,并重用可能的冗余对象,如重用的图像、XObject和字体。请注意,PdfSmartCopy的早期版本中存在一些错误,因此请确保您使用的是最新版本。 如果不同的PDF使用相同字体的不同子集,那么您就不走运了。iText不合并字体子集。合并不同的字体子集将涉及重写内容流、创建新字体(如果我们讨论的是简单的字体集,如果这些子集被合并,则需要超过256个字符),等等。。。
您可以重命名子集

好像你有

Helvetica子集

Helvetica子集

你会创造

Helvetica-1子集

Helvetiva-2子集

一旦它们是不同的实现,就可以进行二进制流比较