当前位置:  开发笔记 > 编程语言 > 正文

确定PDF文件中的页数

如何解决《确定PDF文件中的页数》经验,为你挑选了3个好方法。

我需要使用C#代码(.NET 2.0)确定指定PDF文件中的页数.PDF文件将从文件系统中读取,而不是从URL读取.有没有人对如何做到这一点有任何指示?注意:将在执行此检查的PC上安装Adobe Acrobat Reader.



1> darkdog..:

你需要一个C#的PDF API.iTextSharp是一种可能的API,但可能存在更好的API.

iTextSharp示例

您必须安装iTextSharp.dll作为参考.从SourceForge.net下载iTextsharp这是一个使用控制台应用程序的完整工作程序.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using iTextSharp.text.pdf;
using iTextSharp.text.xml;
namespace GetPages_PDF
{
  class Program
{
    static void Main(string[] args)
      {
       // Right side of equation is location of YOUR pdf file
        string ppath = "C:\\aworking\\Hawkins.pdf";
        PdfReader pdfReader = new PdfReader(ppath);
        int numberOfPages = pdfReader.NumberOfPages;
        Console.WriteLine(numberOfPages);
        Console.ReadLine();
      }
   }
}


感谢,Darkdog,在查看PDFLib和iTextSharp之后,我最终使用了iTextSharp:PdfReader pdfReader = new PdfReader(pdfFilePath); int numberOfPages = pdfReader.NumberOfPages; 希望这可以帮助面临同样问题的人.

2> Barrett..:

这应该做的伎俩:

public int getNumberOfPdfPages(string fileName)
{
    using (StreamReader sr = new StreamReader(File.OpenRead(fileName)))
    {
        Regex regex = new Regex(@"/Type\s*/Page[^s]");
        MatchCollection matches = regex.Matches(sr.ReadToEnd());

        return matches.Count;
    }
}

从Rachael的答案和这一个.


PDF使用版本化对象,如果尚未清理PDF,也可以包含已删除的对象,因此可以使实际没有链接到PDF或已用新版本替换的Page对象.这就是为什么使用维护的PDF库比自己做的更好.
效果很好但比iTextSharp解决方案慢.

3> 小智..:

在http://www.dotnetspider.com/resources/21866-Count-pages-PDF-file.aspx找到了一种方法, 这不需要购买pdf库

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有