Déterminer le nombre de pages dans un fichier PDF

Je dois déterminer le nombre de pages d’un fichier PDF spécifié à l’aide du code C # (.NET 2.0). Le fichier PDF sera lu depuis le système de fichiers et non depuis une URL. Quelqu’un at-il des indications sur la façon dont cela pourrait être fait? Remarque: Adobe Acrobat Reader est installé sur le PC où cette vérification sera effectuée.

Vous aurez besoin d’une API PDF pour C #. iTextSharp est une API possible, bien que les meilleures puissent exister.

Exemple iTextSharp

Vous devez installer iTextSharp.dll comme référence. Télécharger iTextsharp depuis SourceForge.net Ceci est un programme de travail complet utilisant une application console.

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(ssortingng[] args) { // Right side of equation is location of YOUR pdf file ssortingng ppath = "C:\\aworking\\Hawkins.pdf"; PdfReader pdfReader = new PdfReader(ppath); int numberOfPages = pdfReader.NumberOfPages; Console.WriteLine(numberOfPages); Console.ReadLine(); } } } 

Cela devrait faire l’affaire:

 public int getNumberOfPdfPages(ssortingng 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; } } 

De la réponse de Rachael et de celle-ci aussi.

trouvé un moyen à http://www.dotnetspider.com/resources/21866-Count-pages-PDF-file.aspx ceci n’exige pas l’achat d’une bibliothèque pdf

J’ai utilisé pdflib pour cela.

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

La bibliothèque Docotic.Pdf peut être utilisée pour accomplir la tâche.

Voici un exemple de code:

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

La bibliothèque parsingra le moins possible pour que les performances soient correctes.

Disclaimer: Je travaille pour Bit Miracle.

Une ligne:

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

Recommandé: ITEXTSHARP

PDFsharp

celui-ci devrait être meilleur =)

Je réussis bien en utilisant les produits CeTe Dynamic PDF. Ils ne sont pas gratuits, mais sont bien documentés. Ils ont fait le travail pour moi.

http://www.dynamicpdf.com/

J’ai utilisé le code ci-dessus qui résout le problème en utilisant regex et ça marche, mais c’est assez lent. Il lit l’intégralité du fichier pour déterminer le nombre de pages.

Je l’ai utilisé dans une application Web et les pages répertorient parfois 20 ou 30 fichiers PDF à la fois et, dans ce cas, le temps de chargement de la page est passé de quelques secondes à presque une minute en raison de la méthode de comptage des pages.

Je ne sais pas si les bibliothèques tierces sont bien meilleures, j’espère qu’elles le sont et j’ai utilisé pdflib avec succès dans d’autres scénarios.