【问题标题】:consolidate the fonts between merges pdfs itextsharp C#合并合并pdfs itextsharp C#之间的字体
【发布时间】:2013-12-19 19:25:49
【问题描述】:

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

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

虽然当我通过 Acrobat X pro 运行 pdf 并对其进行优化时,它的大小几乎减少了 90%+,从 160 mb 减少到 5 mb。使用审计表明其 90% 的 pdf 是优化前的字体。

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

【问题讨论】:

    标签: c# pdf optimization itextsharp


    【解决方案1】:

    我的回答由两部分组成:

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

    【讨论】:

      【解决方案2】:

      您可以重命名子集。

      好像你有

      Helvetica(子集)

      Helvetica(子集)

      你会创造

      Helvetica-1(子集)

      Helvetiva-2(子集)

      一旦它们是不同的实现(二进制流比较)

      【讨论】:

        【解决方案3】:

        根据 https://turreta.com/2013/12/13/remove-duplicate-fonts-in-pdf-files/

            iTextSharp.text.Document tdocument = new iTextSharp.text.Document();
            iTextSharp.text.pdf.PdfSmartCopy smart = 
               new iTextSharp.text.pdf.PdfSmartCopy(tdocument, 
                 new FileStream(@"newAddressPath", FileMode.Create));
            tdocument.Open();
              
                
            iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(@"yourPDFMergeFile");
            // Where the magic happens
            for (int i = 1; i <= reader.NumberOfPages; i++)
            {
              smart.AddPage(smart.GetImportedPage(reader, i));
            }
            tdocument.Close();
        

        【讨论】:

          猜你喜欢
          • 2013-12-08
          • 2016-08-14
          • 1970-01-01
          • 2012-10-22
          • 2013-03-09
          • 2023-03-22
          • 2011-01-15
          • 2023-03-03
          • 1970-01-01
          相关资源
          最近更新 更多