c# pdf Seitenzahl – Dokumentinformationen extrahieren mit GroupDocs.Annotation
Einleitung
Haben Sie sich schon einmal gefragt, was sich in einem Stapel Dokumente verbirgt, ohne jedes einzelne öffnen zu müssen? Sie sind damit definitiv nicht allein. Egal, ob Sie ein Dokumenten‑Management‑System bauen, juristische Dateien verarbeiten oder einfach die digitalen Assets Ihres Unternehmens organisieren möchten – zu wissen, wie man Dokumentinformationen in C# extrahiert — einschließlich der c# pdf Seitenzahl — kann ein echter Wendepunkt sein.
Das manuelle Prüfen von Dateieigenschaften ist zeitaufwendig und fehleranfällig. Mit GroupDocs.Annotation für .NET können Sie diesen gesamten Prozess automatisieren und Dateityp, Seitenzahl, Dokumentgröße und mehr in nur wenigen Codezeilen abrufen. Dieses Tutorial zeigt, warum das wichtig ist, wie die Bibliothek eingerichtet wird und liefert Schritt‑für‑Schritt‑Code, der sofort funktioniert.
Schnelle Antworten
- Was extrahiert GroupDocs.Annotation? Dateityp, Seitenzahl, Größe und grundlegende Metadaten.
- Wie viele Formate werden unterstützt? Über 50 Eingabe‑ und Ausgabeformate, darunter PDF, DOCX, XLSX, PPTX und gängige Bildtypen.
- Kann ich die c# pdf Seitenzahl erhalten, ohne die gesamte Datei zu laden? Ja –
GetDocumentInfo()liest nur die Header‑Informationen, die für die Seitenzahl nötig sind. - Benötige ich eine Lizenz für die Entwicklung? Eine kostenlose Testversion reicht für Tests; für die Produktion ist eine Voll‑Lizenz erforderlich.
- Ist die API thread‑sicher für Web‑Apps? Absolut – schließen Sie
Annotator‑Instanzen korrekt.
Was ist c# pdf Seitenzahl?
Die c# pdf Seitenzahl ist die Gesamtzahl der Seiten, die von einer PDF‑Datei über eine API zurückgemeldet wird. Mit GroupDocs.Annotation erhalten Sie diesen Wert sofort über die Methode GetDocumentInfo(), ohne das gesamte Dokument zu rendern. Diese Zahl wird aus der internen Struktur der PDF abgeleitet, sodass Sie Entscheidungen über Verarbeitung, Speicherung oder Anzeige treffen können, ohne die Datei in einem Viewer zu öffnen. Sie ist besonders nützlich für Batch‑Validierungen, Compliance‑Prüfungen und UI‑Vorschauen, bei denen Seitenlimits eine Rolle spielen.
Warum Dokumentinformationen mit GroupDocs.Annotation extrahieren?
GroupDocs.Annotation unterstützt mehr als 50 Dokumentformate und kann mehrseitige Dateien verarbeiten, ohne die gesamte Datei in den Speicher zu laden, und liefert Metadaten in unter 200 ms auf einem typischen Server. Diese Geschwindigkeit und Formatbreite machen es ideal für großflächige Automatisierung, Compliance‑Prüfungen und intelligente Inhaltsklassifizierung.
Voraussetzungen und Einrichtung
Was Sie benötigen
- Visual Studio 2019 oder neuer (Community‑Edition reicht aus)
- .NET Framework 4.6.1+ oder .NET Core 2.0+
- Grundkenntnisse in C# und Erfahrung mit NuGet
Installation von GroupDocs.Annotation
Die Bibliothek ins Projekt zu holen ist unkompliziert. Wählen Sie die bevorzugte Methode:
Option 1: Package Manager Console (empfohlen)
Install-Package GroupDocs.Annotation -Version 25.4.0
Option 2: .NET CLI
dotnet add package GroupDocs.Annotation --version 25.4.0
Option 3: Package Manager UI
Wenn Sie lieber klicken als tippen, suchen Sie einfach nach „GroupDocs.Annotation“ im NuGet‑Package‑Manager‑UI und installieren Sie die neueste Version.
Lizenz beziehen
- Starten Sie mit der kostenlosen Testversion: Download von der GroupDocs‑Website – ohne Haken.
- Mehr Zeit nötig? Holen Sie sich eine temporäre Lizenz für eine erweiterte Evaluierung.
- Bereit für den Live‑Betrieb? Kaufen Sie eine Voll‑Lizenz, wenn Sie bereit zur Bereitstellung sind.
Pro‑Tipp: Die Testversion enthält Wasserzeichen, ist aber perfekt zum Lernen und Testen Ihres Codes.
Für die neuesten Änderungen siehe die Release‑Notes.
Wie man die c# pdf Seitenzahl mit GroupDocs.Annotation ermittelt
Annotator ist die Hauptklasse, die ein Dokument lädt und Annotation‑ sowie Metadaten‑Funktionen bereitstellt.
Laden Sie Ihr PDF mit new Annotator("file.pdf") und rufen Sie GetDocumentInfo() auf – die Eigenschaft PageCount liefert die exakte Seitenzahl in nur zwei Codezeilen. GetDocumentInfo() gibt ein DocumentInfo‑Objekt zurück, das Metadaten wie Seitenzahl, Dateityp und Größe enthält. Diese Methode liest nur die notwendigen Header‑Daten, sodass selbst große PDFs effizient verarbeitet werden.
Grundlegende Einrichtung und Dokumenten‑Laden
using System;
using GroupDocs.Annotation;
class Program
{
static void Main(string[] args)
{
// Initialize the annotator with a document path
using (Annotator annotator = new Annotator("YOUR_DOCUMENT_DIRECTORY/input.pdf"))
{
Console.WriteLine("Document loaded successfully!");
// We'll add the extraction code here next
}
}
}
Extrahieren von Dokument‑Metadaten
DocumentInfo fasst die extrahierten Eigenschaften einer Datei zusammen und macht sie leicht lesbar und nutzbar in Ihrer Anwendung.
using (Annotator annotator = new Annotator("YOUR_DOCUMENT_DIRECTORY/input.pdf"))
{
// Extract document info
IDocumentInfo info = annotator.Document.GetDocumentInfo();
// Always check if info was retrieved successfully
if (info == null || info.PageCount == 0)
{
throw new Exception("Unexpected document information!");
}
// Display the extracted information
Console.WriteLine($"\
File type: {info.FileType}\
Number of pages: {info.PageCount}\
Document size: {info.Size} bytes.");
// Convert size to more readable format
string readableSize = FormatFileSize(info.Size);
Console.WriteLine($"Document size (formatted): {readableSize}");
}
// Helper method to format file size
static string FormatFileSize(long bytes)
{
string[] suffixes = { "B", "KB", "MB", "GB", "TB" };
int counter = 0;
decimal number = bytes;
while (Math.Round(number / 1024) >= 1)
{
number /= 1024;
counter++;
}
return string.Format("{0:n1}{1}", number, suffixes[counter]);
}
Erweiterte Anzeige von Informationen
Falls Sie mehr Kontext benötigen – etwa ob das Dokument einen Größenschwellenwert überschreitet – können Sie das Basisbeispiel mit zusätzlichen Prüfungen und Geschäftslogik erweitern.
using (Annotator annotator = new Annotator("YOUR_DOCUMENT_DIRECTORY/input.pdf"))
{
IDocumentInfo info = annotator.Document.GetDocumentInfo();
if (info == null)
{
Console.WriteLine("Could not retrieve document information.");
return;
}
// Comprehensive info display
Console.WriteLine("=== Document Information ===");
Console.WriteLine($"File Type: {info.FileType}");
Console.WriteLine($"Page Count: {info.PageCount}");
Console.WriteLine($"Size: {FormatFileSize(info.Size)}");
// Additional checks you might want to perform
if (info.PageCount > 100)
{
Console.WriteLine("⚠️ Large document detected - consider batch processing");
}
if (info.Size > 10 * 1024 * 1024) // 10MB
{
Console.WriteLine("⚠️ Large file size - may impact processing time");
}
Console.WriteLine("=== Analysis Complete ===");
}
Häufige Probleme und Lösungen
Problem 1: „Datei nicht gefunden“-Fehler
Direkte Antwort: Stellen Sie sicher, dass der Dateipfad absolut ist oder korrekt relativ zum Anwendungsverzeichnis aufgelöst wird, und prüfen Sie, ob der Prozess Leseberechtigungen hat.
string documentPath = @"C:\Documents\test.pdf";
// Always check if file exists first
if (!File.Exists(documentPath))
{
Console.WriteLine($"File not found: {documentPath}");
return;
}
try
{
using (Annotator annotator = new Annotator(documentPath))
{
// Your code here
}
}
catch (Exception ex)
{
Console.WriteLine($"Error loading document: {ex.Message}");
}
Problem 2: Nicht unterstütztes Dateiformat
Direkte Antwort: Vergewissern Sie sich, dass die Dateierweiterung zu einem der über 50 unterstützten Formate gehört; andernfalls konvertieren Sie die Datei vor dem Aufruf von GetDocumentInfo() in ein unterstütztes Format.
try
{
using (Annotator annotator = new Annotator(documentPath))
{
IDocumentInfo info = annotator.Document.GetDocumentInfo();
if (info == null)
{
Console.WriteLine("Unsupported file format or corrupted document");
return;
}
// Process the info
}
}
catch (UnsupportedFileTypeException ex)
{
Console.WriteLine($"File type not supported: {ex.Message}");
}
Problem 3: Speicherprobleme bei großen Dokumenten
Direkte Antwort: Führen Sie Größenkontrollen vor dem Laden durch und verwenden Sie using‑Blöcke, um die Annotator‑Instanz zuverlässig zu entsorgen, wodurch Speicherlecks vermieden werden.
const long MAX_FILE_SIZE = 50 * 1024 * 1024; // 50MB limit
FileInfo fileInfo = new FileInfo(documentPath);
if (fileInfo.Length > MAX_FILE_SIZE)
{
Console.WriteLine("File too large for processing");
return;
}
// Use proper disposal patterns
using (Annotator annotator = new Annotator(documentPath))
{
// Process quickly and dispose
IDocumentInfo info = annotator.Document.GetDocumentInfo();
// Handle info immediately
}
// Annotator is automatically disposed here
Praxisbeispiele
Integration in ein Dokumenten‑Management‑System
Wenn ein Benutzer eine Datei hochlädt, extrahieren Sie zuerst die Metadaten, um Speicherort, Indexierungsstrategie oder erforderlichen Genehmigungs‑Workflow zu bestimmen.
public class DocumentProcessor
{
public DocumentMetadata ProcessUpload(string filePath)
{
using (Annotator annotator = new Annotator(filePath))
{
IDocumentInfo info = annotator.Document.GetDocumentInfo();
return new DocumentMetadata
{
FileName = Path.GetFileName(filePath),
FileType = info.FileType.ToString(),
PageCount = info.PageCount,
FileSizeBytes = info.Size,
ProcessedDate = DateTime.UtcNow,
Category = DetermineCategory(info)
};
}
}
private string DetermineCategory(IDocumentInfo info)
{
// Business logic for automatic categorization
if (info.FileType.ToString().Contains("Pdf"))
{
return info.PageCount > 20 ? "Legal Document" : "Standard Document";
}
return "Other";
}
}
Stapel‑Dokumentenanalyse
Verarbeiten Sie einen Ordner mit Dateien in einem Hintergrundjob und protokollieren Sie für jedes Dokument die Seitenzahl und den Typ für Reporting‑Zwecke.
public void AnalyzeDocumentFolder(string folderPath)
{
string[] supportedExtensions = { ".pdf", ".docx", ".xlsx", ".pptx" };
foreach (string file in Directory.GetFiles(folderPath))
{
if (!supportedExtensions.Contains(Path.GetExtension(file).ToLower()))
continue;
try
{
using (Annotator annotator = new Annotator(file))
{
IDocumentInfo info = annotator.Document.GetDocumentInfo();
Console.WriteLine($"{Path.GetFileName(file)}: {info.FileType}, {info.PageCount} pages");
}
}
catch (Exception ex)
{
Console.WriteLine($"Failed to process {file}: {ex.Message}");
}
}
}
Compliance und Validierung
Regulierte Branchen verlangen häufig, dass Dokumente eine bestimmte Seitenzahl oder Größe nicht überschreiten. Nutzen Sie die extrahierten Metadaten, um nicht konforme Uploads automatisch abzulehnen.
public bool ValidateDocument(string filePath, DocumentRequirements requirements)
{
using (Annotator annotator = new Annotator(filePath))
{
IDocumentInfo info = annotator.Document.GetDocumentInfo();
// Check file type
if (requirements.AllowedTypes != null &&
!requirements.AllowedTypes.Contains(info.FileType.ToString()))
{
return false;
}
// Check page count limits
if (info.PageCount < requirements.MinPages ||
info.PageCount > requirements.MaxPages)
{
return false;
}
// Check file size
if (info.Size > requirements.MaxSizeBytes)
{
return false;
}
return true;
}
}
Tipps zur Leistungsoptimierung
1. Caching implementieren
Cache‑Sie DocumentInfo‑Ergebnisse für häufig aufgerufene Dateien, um wiederholte I/O‑Operationen zu vermeiden.
private static readonly Dictionary<string, IDocumentInfo> _infoCache =
new Dictionary<string, IDocumentInfo>();
public IDocumentInfo GetDocumentInfoCached(string filePath)
{
string fileHash = GetFileHash(filePath);
if (_infoCache.ContainsKey(fileHash))
{
return _infoCache[fileHash];
}
using (Annotator annotator = new Annotator(filePath))
{
IDocumentInfo info = annotator.Document.GetDocumentInfo();
_infoCache[fileHash] = info;
return info;
}
}
2. Asynchrone Verarbeitung für mehrere Dokumente
Verwenden Sie Task.Run oder async‑Streams, um viele Dateien gleichzeitig zu verarbeiten, ohne den Hauptthread zu blockieren.
public async Task<List<DocumentMetadata>> ProcessDocumentsAsync(string[] filePaths)
{
var tasks = filePaths.Select(async path =>
{
return await Task.Run(() =>
{
using (Annotator annotator = new Annotator(path))
{
IDocumentInfo info = annotator.Document.GetDocumentInfo();
return new DocumentMetadata(path, info);
}
});
});
return (await Task.WhenAll(tasks)).ToList();
}
3. Best Practices für Speicherverwaltung
- Immer
Annotatorin einemusing‑Block einbetten. - Dokumente in Batches verarbeiten, nicht alle auf einmal.
- Für Dateien größer als 100 MB zuerst das File‑Streaming auf die Festplatte auslagern und dann die Metadaten lesen.
Fehlersuch‑Leitfaden
Lizenz‑bezogene Probleme
License ist das Objekt, das Ihre Produktaktivierungsdatei bei der GroupDocs‑Bibliothek registriert. Stellen Sie sicher, dass die Lizenzdatei im Stammverzeichnis der Anwendung liegt und das License‑Objekt vor allen anderen GroupDocs‑Aufrufen instanziiert wird.
// Set license before using any GroupDocs functionality
License license = new License();
license.SetLicense("path/to/your/license.lic");
// Or use stream for embedded licenses
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("YourApp.license.lic"))
{
license.SetLicense(stream);
}
Leistungsprobleme
Direkte Antwort: Profilieren Sie Ihre Anwendung, begrenzen Sie Dateigrößen auf 100 MB für Echtzeit‑Verarbeitung und aktivieren Sie Caching für wiederholte Lesevorgänge.
Plattform‑spezifische Probleme
Direkte Antwort: Verwenden Sie Path.Combine für plattformübergreifende Pfadkonstruktion; Windows nutzt Backslashes, Linux verwendet Forward Slashes.
// Use Path.Combine for cross-platform compatibility
string documentPath = Path.Combine(baseDirectory, "documents", fileName);
Umgang mit passwortgeschützten Dokumenten
Direkte Antwort: Übergeben Sie das Passwort dem Annotator‑Konstruktor oder setzen Sie es über LoadOptions, bevor Sie GetDocumentInfo() aufrufen.
LoadOptions loadOptions = new LoadOptions() { Password = "your-password" };
using (Annotator annotator = new Annotator("protected-document.pdf", loadOptions))
{
// Extract information normally
}
Aktualisierung von GroupDocs.Annotation
Direkte Antwort: Führen Sie dotnet add package GroupDocs.Annotation --version <latest> aus oder nutzen Sie das NuGet‑Package‑Manager‑UI, um die neueste Version zu holen.
Update-Package GroupDocs.Annotation
Häufig gestellte Fragen
F: Welche Dokumentformate unterstützt GroupDocs.Annotation für die Informations‑Extraktion?
A: GroupDocs.Annotation unterstützt über 50 Dokumentformate, darunter PDF, DOCX, XLSX, PPTX, JPEG, PNG, TIFF, CAD‑Dateien und viele mehr.
F: Kann ich benutzerdefinierte Metadaten oder Eigenschaften aus Dokumenten extrahieren?
A: GetDocumentInfo() liefert Kern‑Metadaten wie Dateityp, Seitenzahl und Größe. Für benutzerdefinierte Eigenschaften wie Autor oder Erstellungsdatum kombinieren Sie GroupDocs.Annotation mit GroupDocs.Metadata oder nutzen die nativen APIs des jeweiligen Dateiformats.
F: Wie gehe ich mit passwortgeschützten Dokumenten um?
A: Geben Sie das Passwort beim Erzeugen der Annotator‑Instanz an, z. B. new Annotator("secure.pdf", new LoadOptions { Password = "pwd" }).
F: Gibt es eine Möglichkeit, Dokumentinformationen zu extrahieren, ohne die gesamte Datei in den Speicher zu laden?
A: Ja – GetDocumentInfo() liest nur den Dateikopf, sodass der Speicherverbrauch selbst bei mehrseitigen PDFs gering bleibt.
F: Kann ich das in einer Web‑Anwendung oder einer Multi‑Thread‑Umgebung einsetzen?
A: Absolut. GroupDocs.Annotation ist thread‑sicher; erstellen Sie pro Anfrage eine neue Annotator‑Instanz und entsorgen Sie sie umgehend.
Fazit und nächste Schritte
Sie verfügen nun über einen vollständigen, produktionsreifen Ansatz, um die c# pdf Seitenzahl, den Dateityp und die Größe mit GroupDocs.Annotation zu extrahieren. Sie haben gelernt, wie die Bibliothek eingerichtet, Metadaten abgerufen, gängige Stolperfallen umgangen und die Leistung für großskalige Szenarien optimiert wird.
Nächste Aktionen:
- Klonen Sie das Beispielprojekt und führen Sie die bereitgestellten Platzhalter mit echten Dateien aus.
- Erkunden Sie weitere GroupDocs.Annotation‑Funktionen wie Annotation‑Rendering und Dokumenten‑Vergleich.
- Integrieren Sie die Metadaten‑Extraktion in Ihre bestehende Upload‑Pipeline, um Klassifizierung und Validierung zu automatisieren.
Denken Sie daran: Zuverlässige Dokumenten‑Verarbeitung beginnt mit soliden Metadaten. Mit GroupDocs.Annotation können Sie intelligentere, schnellere und skalierbarere Lösungen bauen.
Zuletzt aktualisiert: 2026-06-01
Getestet mit: GroupDocs.Annotation 25.4.0 (neueste)
Autor: GroupDocs
Wichtige Links:
- Dokumentation
- API‑Referenz
- Neueste Version herunterladen
- Lizenzen erwerben
- Kostenlose Testversion herunterladen
- Temporäre Lizenz anfordern
- Community‑Support‑Forum