我使用正则表达式来计算 pdf 的页数。下面是我使用的代码。
Regex regex = new Regex(@"/Type\s*/Page[^s]");
MatchCollection matches = regex.Matches(sr.ReadToEnd());
return matches.Count;
它适用于 1.6 以下的版本,但不适用于 1.6 版的 pdf 文件。如果 pdf 版本是 1.6 则返回 0 页。
最佳答案
在您的情况下,您很可能需要处理 1.6 文档,这些文档利用了当时引入的压缩对象流功能。由于在此类文档中您搜索的信息是压缩的,因此您的正则表达式找不到它。
有一些工具可以让您在搜索文件之前解压缩文件中的此类流。不过,在您寻找它们之前,请注意您的代码结果无论如何都不可信任,因为
- 匹配项可能多于页面,因为文件中可能有旧的、未使用的页面对象或什至其他误报,
- 匹配项可能少于页面,因为 PDF 允许使用其他方式来编写这些类型条目。
关于regex - 使用正则表达式的 PDF 页数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30236358/