Подтвердить что ты не робот

Определить количество страниц в файле PDF

Мне нужно определить количество страниц в указанном файле PDF, используя код С# (.NET 2.0). PDF файл будет считан из файловой системы, а не из URL-адреса. У кого-нибудь есть какие-то указания относительно того, как это можно сделать? Примечание. Adobe Acrobat Reader установлен на ПК, где эта проверка будет выполнена.

4b9b3361

Ответ 1

Вам понадобится API-интерфейс PDF для С#. iTextSharp - один из возможных API, хотя лучше могут существовать.

Пример iTextSharp

Вы должны установить iTextSharp.dll в качестве ссылки. Загрузите iTextsharp из SourceForge.net. Это полная рабочая программа с использованием консольного приложения.

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

Ответ 2

Это должно сделать трюк:

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

Из ответ Рэйчел и этот.

Ответ 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");

Ответ 5

Docotic.Pdf library может использоваться для выполнения задачи.

Вот пример кода:

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

Библиотека будет анализировать как можно меньше, чтобы производительность была в порядке.

Отказ от ответственности: я работаю над Bit Miracle.

Ответ 6

Одна строка:

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

Рекомендуем: ITEXTSHARP

Ответ 7

PDFsharp

это должно быть лучше =)

Ответ 8

У меня есть хороший успех с использованием продуктов CeTe Dynamic PDF. Они не являются бесплатными, но хорошо документированы. Они выполнили эту работу для меня.

http://www.dynamicpdf.com/

Ответ 9

Я использовал вышеприведенный код, который решает проблему с помощью regex и работает, но это довольно медленно. Он считывает весь файл, чтобы определить количество страниц.

Я использовал его в веб-приложении, и страницы иногда отображали 20 или 30 PDF файлов за раз, и в этом случае время загрузки страницы составляло от нескольких секунд до почти минуты из-за метода подсчета страниц.

Я не знаю, будут ли сторонние библиотеки намного лучше, я надеюсь, что они есть, и я с успехом использовал pdflib в других сценариях.