【问题标题】:is there any way we can find PDF file is compressed or not?有什么方法可以找到 PDF 文件是否被压缩?
【发布时间】:2013-12-05 22:19:50
【问题描述】:

我们正在使用 ITEXTPDF 压缩 PDF,但问题是我们想要压缩在上传到我们的网站之前已压缩的文件...如果文件在没有压缩的情况下上传,我们希望保留这样的文件..

为此,我们需要确定 PDF 是否被压缩......我想知道是否有任何方法可以使用 ITEXTPDF 或其他工具来识别 PDF 是否被压缩!!!..

我试过谷歌但找不到合适的答案..

如果您有任何想法,请告诉我...

谢谢

【问题讨论】:

  • PDF 中的压缩不是一个单一的全局设置(除非您的 PDF 本质上由一个大对象流组成,也就是说,它可能会或可能不会被压缩)。相反,每个流本身都可以被压缩或不被压缩。此外,事后压缩可能是破坏性的,例如如果文档已经过数字签名。

标签: asp.net pdf compression c#-3.0 itextpdf


【解决方案1】:

您可以在 PDF 中获得多种类型的压缩。对象的数据可以被压缩,对象可以被压缩成对象流。

【讨论】:

    【解决方案2】:

    我投票赞成马克的回答,因为他是对的:如果你不更具体,你将不会得到答案。我会用一些额外的信息添加我自己的答案。

    在 PDF 1.0 中,PDF 文件由用于 PDF 语法的 ASCII 字符和用于图像等对象的二进制代码混合而成。页面流将包含可见的 PDF 运算符和操作数,例如:

    56.7 748.5 m
    136.2 748.5 l
    S
    

    此代码告诉您必须在坐标 (x = 56.7; y = 748.5)(因为这是使用 m 运算符将光标移动到的位置)和坐标 (x = 136.2; y = 748.5)(因为路径是使用添加一行的l 运算符构造的)。

    从 PDF 1.2 开始,可以开始对此类内容流(页面内容流、表单 XObjects)使用过滤器。在大多数情况下,您会在流字典中发现一个值为/FlateDecode/Filter 条目。您几乎找不到任何内容未压缩的“现代”PDF。

    直到 PDF 1.5,PDF 文档中的所有间接对象以及交叉引用流都以 ASCII 格式存储在 PDF 文件中。从 PDF 1.5 开始,可以将特定类型的对象存储在对象流中。交叉引用表也可以压缩成流。 iText 的PdfReader 有一个isNewXrefType() 方法来检查是否是这种情况。也许这就是你要找的。也许您的 PDF 需要由无法读取此类 PDF 的软件读取,但是……您没有告诉我们。

    也许我们完全误解了这个问题。也许您想知道您收到的是实际 PDF 还是带有 PDF 的 zip 文件。或者,也许您想真正对 PDF 中使用的不同过滤器进行数据挖掘。简而言之:你的问题不是很清楚,我希望这个答案能解释你为什么要澄清。

    【讨论】:

    • 感谢你的解释。我试图理解你的答案,但对你在你的答案中提到的所有坐标等并不熟悉。抱歉解释的不是很清楚我的问题..让我再解释一下..
    猜你喜欢
    • 2011-10-19
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多