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.

2voto

Bobrovsky Points 5662

Bibliothèque Docotic.Pdf peuvent être utilisés 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 analysera le moins de données possible, de sorte que les performances devraient être correctes.

Clause de non-responsabilité : Je travaille pour Bit Miracle.

0 votes

Je ne veux pas être sarcastique, mais vous devriez vérifier votre déclaration de performance. J'ai essayé sur un PDF de 250 pages, 216Mo, et il était presque 20x plus lent que PDF-Sharp, juste pour obtenir le nombre de pages, en utilisant votre exemple.

1voto

darkdog Points 1944

PDFsharp

celui-ci devrait être meilleur =)

0voto

Paul Lefebvre Points 3624

J'utilise avec succès 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/

0voto

J'ai utilisé le code ci-dessus qui résout le problème en utilisant des expressions rationnelles et cela fonctionne, mais c'est assez lent. Il lit le fichier entier pour déterminer le nombre de pages.

Je l'ai utilisé dans une application web et les pages listaient parfois 20 ou 30 PDF à la fois. Dans ce cas, le temps de chargement de la page passait 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 dans d'autres scénarios avec succès.

0voto

Tom Horrigan Points 1

Vous devez installer iTextSharp.dll comme référence. Télécharger iTextsharp de SourceForge.net Il s'agit d'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();
       }
   }
}

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