确定PDF文件中的页数

时间:2008-11-26 10:50:14

标签: c# pdf .net-2.0

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

8 个答案:

答案 0 :(得分:67)

您需要一个适用于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();
      }
   }
}

答案 1 :(得分:37)

这应该可以解决问题:

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's answerthis one

答案 2 :(得分:7)

http://www.dotnetspider.com/resources/21866-Count-pages-PDF-file.aspx找到了一条路 这不需要购买pdf库

答案 3 :(得分:4)

我已经使用了pdflib

    p = new pdflib();

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

答案 4 :(得分:3)

一行:

.navbar-brand-centered {
position: absolute;
left: 50%;
display: block;
width: 180px;
text-align: center;
background-color: transparent;
}
.navbar>.container .navbar-brand-centered,
.navbar>.container-fluid .navbar-brand-centered {
margin-left: -80px;
}

推荐: ITEXTSHARP

答案 5 :(得分:2)

Docotic.Pdf library可用于完成任务。

以下是示例代码:

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

库将尽可能少地解析,因此性能应该没问题。

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

答案 6 :(得分:0)

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

http://www.dynamicpdf.com/

答案 7 :(得分:0)

我使用上面的代码解决了使用正则表达式的问题并且它可以工作,但它很慢。它读取整个文件以确定页数。

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

我不知道第三方图书馆是否更好,我希望它们是,并且我已经在其他场景中成功使用了pdflib。