Как узнать количество страниц 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 очень большая