繁体   English   中英

确定PDF文件中的页数[关闭]

[英]Determine number of pages in a PDF file [closed]

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

你需要一个 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();
      }
   }
}

这应该可以解决问题:

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;
    }
}

瑞秋的回答这个也是。

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

我为此使用了pdflib

    p = new pdflib();

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

一条线:

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

推荐: ITEXTSHARP

Docotic.Pdf 库可用于完成该任务。

这是示例代码:

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

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

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

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

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

我不知道 3rd 方库是否更好,我希望它们是,并且我已经成功地在其他场景中使用了 pdflib。

我在使用 CeTe Dynamic PDF 产品方面取得了很大的成功。 它们不是免费的,但有据可查。 他们为我完成了这项工作。

http://www.dynamicpdf.com/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM