60 votes

Déterminer le nombre de pages d'un fichier PDF

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

82voto

darkdog Points 1944

Vous aurez besoin d'une API PDF pour C#. iTextSharp est une API possible, mais il en existe de meilleures.

Exemple de iTextSharp

Vous devez installer iTextSharp.dll comme référence. Télécharger iTextsharp depuis SourceForge.net Voici un programme complet et fonctionnel 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(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();
      }
   }
}

0 votes

Donc vous êtes en train de dire "voici ce que je recommande, mais en fait il y a de meilleures façons de faire" ?

12 votes

Merci, Darkdog, après avoir regardé PDFLib et iTextSharp, j'ai fini par utiliser iTextSharp : PdfReader pdfReader = new PdfReader(pdfFilePath) ; int numberOfPages = pdfReader.NumberOfPages ; J'espère que cela aidera quelqu'un confronté au même problème.

0 votes

Merci MagicAndi d'avoir posté le code. Très utile

42voto

Barrett Points 525

Cela devrait faire l'affaire:

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

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

0 votes

Barrett, merci de fournir un exemple de code. +1

1 votes

Je ne pense pas que cela donnera toujours le bon compte. Elle ne fonctionnera pas non plus sur les PDF cryptés.

0 votes

@TimB J'ai enregistré un PDF crypté et cela fonctionne sur celui-ci.

8voto

A trouvé un moyen à http://www.dotnetspider.com/resources/21866-Count-pages-PDF-file.aspx cela ne nécessite pas l'achat d'une bibliothèque pdf

4voto

Peter Gfader Points 3410

J'ai utilisé pdflib pour ça.

    p = new pdflib();

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

3voto

Medo Medo Points 179

Une ligne :

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

Recommandé : ITEXTSHARP

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X