确定PDF文件中的页数

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

你将需要一个C#的PDF API。 iTextSharp是一个可能的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(); } } } 

这应该做的伎俩:

 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的回答和这一个 。

我用这个pdflib 。

  p = new pdflib(); /* Open the input PDF */ indoc = p.open_pdi_document("myTestFile.pdf", ""); pageCount = (int) p.pcos_get_number(indoc, "length:pages"); 

Docotic.Pdf库可能被用来完成任务。

这里是示例代码:

 PdfDocument document = new PdfDocument(); document.Open("file.pdf"); int pageCount = document.PageCount; 

图书馆将尽可能less的parsing,所以performance应该是好的。

免责声明:我为Bit Miracle工作。

一条线:

 int pdfPageCount = System.IO.File.ReadAllText("example.pdf").Split(new string[] { "/Type /Page" }, StringSplitOptions.None).Count()-2; 

推荐: ITEXTSHARP

PDFsharp

这个应该更好=)

我使用CeTe Dynamic PDF产品取得了很好的成功。 他们不是免费的,但有充分的文件。 他们为我做了这份工作。

http://www.dynamicpdf.com/

我已经使用上面的代码使用正则expression式解决问题,它的工作原理,但它很慢。 它读取整个文件以确定页面的数量。

我在一个networking应用程序中使用它,页面有时会列出20或30个PDF,在这种情况下,由于页面计数方法,页面的加载时间从几秒到几乎一分钟。

我不知道第三方库是否更好,我希望他们是,我已经在其他情况下使用pdflib成功。