【问题标题】:Counting the pages in a PDF file [closed]计算 PDF 文件中的页数[关闭]
【发布时间】:2010-10-05 06:45:45
【问题描述】:

我知道有几个工具/库可以做到这一点,但我想知道这是否可以通过将文件作为文本文件打开并查找关键字来实现。

【问题讨论】:

    标签: pdf pdf-extraction


    【解决方案1】:

    看看这个:http://www.freevbcode.com/ShowCode.asp?ID=8153
    编辑:不行,可能太旧了
    找到这个:

    public static int GetNoOfPagesPDF(string FileName)
            {
                int result = 0;
                FileStream fs = new FileStream(FileName, FileMode.Open, FileAccess.Read);
                StreamReader r = new StreamReader(fs);
                string pdfText = r.ReadToEnd();
                System.Text.RegularExpressions.Regex regx = new Regex(@"/Type\s*/Page[^s]");
                System.Text.RegularExpressions.MatchCollection matches = regx.Matches(pdfText);
                result = matches.Count;
                return result;
            }
    

    Ps:测试过!它有效。see here source

    【讨论】:

    • 仅供参考 - 可以编写 PDF 以便您可以将文档的更改附加到现有文件中,因此如果您通过附加页面较少的新目录来“删除”页面(将旧页面留在原处),此解决方案将产生不正确的结果。
    • 上面的代码对我不起作用,返回的页数超过了正确的页数。但这让我意识到大部分 pdf 都是文本,我可以使用 Regex(非全局匹配)/Type /Pages\nCount ([0-9]+) 找到它。
    【解决方案2】:

    [编辑:基于编辑的问题]

    可以通过将其作为文本文件读取并进行一些最少的解析。

    如果您自己阅读 pdf,则需要进行解析。 PDF 中的每一页都由一个页面对象表示。

    以下提供了对页面的简写pdf规范的理解以及pdf规范的链接。

    【讨论】:

    • 更喜欢 pinichi 的答案,因为它有工作代码。投票赞成您的答案,因为它非常有帮助。
    【解决方案3】:

    xpdf 实用程序包(在 debian 中称为 xpdf-utils)包含一个名为 pdfinfo 的应用程序。它将打印出文件中的页数以及其他数据。

    http://www.linuxquestions.org/questions/programming-9/how-to-find-pdf-page-count-699113/

    【讨论】:

    • 对不起,不是我要找的。编辑了我的问题描述以进一步澄清。
    猜你喜欢
    • 2014-06-29
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 2010-09-24
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多