当前位置: 首页 > 知识库问答 >
问题:

如何使用iText 7删除PDF文件中的重复字体

苏高峰
2023-03-14

我正在使用iText 7library(v7.0.5.0)。我从中的RadDiagram(Telerik library)创建了一个PDF文件(a-1B一致性)。Net

生成PDF文件时,在其属性(Acrobat Reader

我可以看到有很多同名的重复字体。

如果我将文件从Acrobat Reader保存到“简化PDF文件”,所有重复的字体都将被清除,每个字体名称只保留一种字体。

我寻找一个解决方案,通过编程删除这些重复字体,因为这些重复字体会显著增加PDF文件的大小。使用Acrobat Reader压缩,文件大小从2.2个月减少到906千欧(无质量损失)。

你可以在这里找到我的PDF文件的一个例子。

这个文件有:

  • 8阿里亚姆特
  • 3塞戈伊

这是一个例子,但有时,我的文件非常大,例如,压缩将大小从16个Mo减少到1个Mo,因为有很多重复的字体。

[编辑]关于我的用例:

RadDiagramTelerik对象,我将它们导出到一个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文件中。

[结束编辑]

多谢了。

共有1个答案

冯飞鹏
2023-03-14

最后,我找到了另一种保存PDF文件的方法。

现在,我不将它们保存到数据库中,我只使用1个PDF文件,我正在使用PDF字体的字典来重新使用它们,而不是声明几个时间字体,所以不要增加使用字体的数量(即使这是相同的字体(与另一个子集))。

 类似资料:
  • 我现在试图修改一个只有文本内容的PDF文件。当我使用 谢谢

  • 问题内容: 有没有一种方法可以使用ant删除重复文件?具体来说,如果我在两个不同的输出目录中具有相同的文件名,则要从第二个目录中删除它。 问题答案: 我想我想出了一个解决方案。

  • 问题内容: 作为我正在做的项目的一部分,我想清理我生成的重复行条目的文件。但是,这些重复项通常不会彼此靠近发生。我想出了一种用Java执行此操作的方法(基本上是复制文件,然后使用嵌套的while语句将一个文件中的每一行与其他文件中的每一行进行比较)。问题是我生成的文件很大而且文本很重(大约22.5万行文本,大约40兆)。我估计目前的程序需要63个小时!这绝对是不可接受的。 但是,我需要一个集成的解

  • 我正在尝试将字体嵌入到我的pdf/a中。 我找到了很多答案,但使用的是iTextSharp 在我的cas中,我使用iText7,但我所尝试的都是错误的: “所有字体都必须嵌入……” 我有一个ttf文件为我的字体,但我没有找到一种方法嵌入到我的pdf使用它... 有人能帮我吗? 事先谢谢 kor6k

  • 问题内容: 我想通过Java从磁盘恢复文件而不使用本机库 我正在使用Java 8进行此操作 据我所知,已删除的文件会保留在磁盘上,直到被覆盖为止 我可以直接访问Linux上的磁盘,并且可以读取原始数据,但是,例如,如何解析ext4或NTFS文件系统上的已删除文件? 谢谢。 问题答案: 要恢复已删除的文件,需要了解底层文件系统的实现方式,因此您需要做一些阅读工作,然后才能到达任何地方。 从理论上讲,

  • 问题内容: 如何使用Java删除字符串中的重复空格(包括制表符,换行符,空格等)? 问题答案: 像这样: 例如 输出 那是什么意思 是一个正则表达式。匹配空格,制表符,换行符,回车符,换页或垂直制表符,并说“其中的一个或多个”。因此,以上代码将用一个空格字符折叠所有长于一个字符的“空白子字符串”。