Как узнать количество страниц PDF-файла, который пользователь выбирает в OpenFileDialog в C#?

Привет из Афганистана
Я разрабатываю настольное приложение, которое отправляет и получает факс, используя мыльное сообщение, и мне нужно знать количество страниц PDF-файла, которое пользователь хочет отправить по факсу.

4 ответа

Есть несколько внешних библиотек, чтобы знать количество страниц документа PDF, когда документ был загружен на сервер:

ITEXTSHARP

http://sourceforge.net/projects/itextsharp/

private static int getNumberOfPdfPages(string pathDocument)
{
    return new iTextSharp.text.pdf.PdfReader(pathDocument).NumberOfPages;
}

PDFLib

http://www.pdflib.com/ - (Метод протестирован в версии 6.0.4.0)

private static int getNumberOfPdfPages(string pathDocument)
{
    int doc = 0;
    int numPages = 0;

    PDFlib_dotnet.PDFlib oPDF = new PDFlib_dotnet.PDFlib();
    doc = oPDF.open_pdi(pathDocument, "", 0); //open document
    if (doc != -1) //if not problem open document
    {
        numPages = (int)oPDF.get_pdi_value("/Root/Pages/Count", doc, -1, 0);
        oPDF.close_pdi(doc);//close document
    }
    return numPages;
}

PDFsharp

private static int getNumberOfPdfPages(string pathDocument)
{
    return PdfSharp.Pdf.IO.PdfReader.Open(pathDocument, PdfSharp.Pdf.IO.PdfDocumentOpenMode.InformationOnly).PageCount;
}

StreamReader

Не нужна внешняя библиотека

public static int getNumberOfPdfPages(string pathDocument)
{
    using (StreamReader sr = new StreamReader(File.OpenRead(pathDocument)))
    {
        return new Regex(@"/Type\s*/Page[^s]").Matches(sr.ReadToEnd()).Count;
    }
}

Вы можете найти /Count значение в файле и просто разобрать его без использования внешней библиотеки. Это будет выглядеть /Count 5 если PDF имеет 5 страниц.

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

Вам понадобится библиотека PDF для анализа PDF и определения количества страниц в нем. Есть несколько бесплатных для.NET.

Я использовал PDFjs для оценки PDF перед загрузкой на стороне клиента. Прекрасно работает для получения количества страниц, размера страницы.... хотя полезная нагрузка для загрузки PDFjs очень большая

http://www.pdfcharts.com/lab/analyze.html

Другие вопросы по тегам