pdf - 我想检查 pdf 文档是否包含 web 应用程序 c# 中的交叉引用流或表。如何检查?

标签 pdf cross-reference

我有一个 c# web 应用程序,我想检查 pdf 文档是否包含交叉引用流。如果它包含交叉引用流,则将其转换为引用表。

最佳答案

检测相当容易。从文件末尾搜索“%%EOF”;正确的 PDF 文件实际上以“%%EOF”行结尾,不正确的 PDF 文件可能在该标记后有一些垃圾字节。该标记行之前的行包含最后交叉引用的位置(参见 Adobe copy of ISO-32000-1:2008 第 7.5.5 节)。转到此处注明的位置。

如果您在该位置找到外部参照关键字,则 PDF 具有交叉引用表。如果您改为找到 PDF 流对象(同上第 7.5.8 节),则 PDF 具有交叉引用流。如果两者均未找到,则说明该文件有问题。

不过,转换很困难,特别是如果 PDF 还使用只能与交叉引用流一起使用的对象流。您可能想使用像 iText(Sharp) 这样的库来读取 PDF 并在启用较少压缩的情况下再次导出它。

此外,如果 PDF 已签名,则无法在不破坏签名的情况下进行转换。

关于pdf - 我想检查 pdf 文档是否包含 web 应用程序 c# 中的交叉引用流或表。如何检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12910986/

相关文章:

python - 使用 Python 对 PDF 文档进行数字签名

javascript - 如何在 react.js 中包含 pdf 链接

python - 链接到 Python 文档字符串中的类方法

markdown - 使用 Pandoc 引用图和表编号

超链接特定项目/在投影仪暂停后

c# - PDFSharp 使用 PdfTextField 作为位置和大小引用在 pdf 中插入图像

python - 使用 Python 将 PDF 转换为 .docx

c# - 通过 Windows 服务将 pdf 文件发送到打印机

python - Sphinx for Python 中函数或类的交叉引用文档

C++ STL 列出两个结构交叉引用