Gestion de documents
Gestion de documents
Document est l’objet racine dans Aspose.PDF FOSS pour .NET. Il représente un
fichier PDF complet et fournit l’accès aux pages, aux métadonnées, aux champs de formulaire, et à toutes
les autres structures PDF. Ouvrez les fichiers existants avec Document.Open et créez de nouveaux
avec le constructeur Document.
Ouverture et création de documents
// Open from a byte array
using var doc = Document.Open(File.ReadAllBytes("input.pdf"));
// Open from a file path
using var doc2 = new Document("input.pdf");
// Create a new empty document
using var newDoc = new Document();
newDoc.Pages.Add();
newDoc.Save("new.pdf");Travailler avec des pages
PageCollection gère les pages du document. Accédez aux pages par indice basé sur 1, ajoutez de nouvelles pages ou supprimez les pages existantes.
using var doc = Document.Open(pdfBytes);
// Access first page
var page = doc.Pages[1];
// Add a blank page
var newPage = doc.Pages.Add();
// Get page count
int count = doc.Pages.Count;Géométrie de la page
Chaque page définit plusieurs boîtes englobantes. Utilisez les méthodes setter sur Page pour les ajuster.
var page = doc.Pages[1];
page.SetMediaBox(new Rectangle(0, 0, 612, 792));
page.SetCropBox(new Rectangle(36, 36, 576, 756));
page.SetRotation(90);Enregistrement des documents
Enregistrez dans un chemin de fichier, un flux ou un tableau d’octets.
// Save to file
doc.Save("output.pdf");
// Save to stream
using var ms = new MemoryStream();
doc.Save(ms);Pièces jointes
FileSpecification représente les pièces jointes de fichiers incorporés dans un PDF.
var spec = new FileSpecification("data.csv", "Embedded data file");
doc.EmbeddedFiles.Add(spec);Tampons d’image
ImageStamp superpose une image raster sur une page à une position spécifiée.
var stamp = new ImageStamp("logo.png");
stamp.Put(doc.Pages[1]);
doc.Save("stamped.pdf");Collections d’opérateurs
OperatorCollection sur chaque page contient les opérateurs bruts du flux de contenu. Utilisez‑le pour l’inspection ou la manipulation de contenu à bas niveau.
var ops = doc.Pages[1].Contents;
foreach (var op in ops)
{
// Inspect each operator
}Conseils et meilleures pratiques
- Enveloppez
Documentdans une instructionusingpour libérer rapidement les poignées de fichier. - Utilisez
Document.Open(byte[])pour les flux de travail en mémoire afin d’éviter les problèmes de verrouillage de fichiers. - Modifiez les boîtes de page (MediaBox, CropBox) avant d’ajouter du contenu afin d’assurer un espace de coordonnées correct.
- Appelez
Saveune seule fois après toutes les modifications — les sauvegardes répétées sont plus lentes mais sûres. - Utilisez
PageCollection.Accept(AnnotationSelector)pour traiter par lots les annotations sur toutes les pages.
Problèmes courants
| Issue | Cause | Fix |
|---|---|---|
Document.Open lève une exception sur un PDF valide | Le fichier est chiffré avec un mot de passe | Fournir le paramètre de mot de passe dans le constructeur |
| Le nombre de pages est 0 après la construction | Le nouveau Document() commence vide | Appeler doc.Pages.Add() pour ajouter une page vierge |
| Le fichier enregistré est plus volumineux que prévu | Images ou polices incorporées plusieurs fois | Utiliser l’optimisation (voir le guide Conversion et Optimisation) |
Pages[0] lève une erreur d’index | Les pages sont indexées à partir de 1, pas de 0 | Utiliser Pages[1] pour la première page |
FAQ
Comment fusionner deux documents PDF ?
Utilisez PdfFileEditor.Concatenate de l’API Facades, ou copiez manuellement des pages d’un document à un autre en utilisant PageCollection.
Puis‑je ouvrir un PDF à partir d’une URL ou d’un flux ?
Oui. Lisez le contenu de l’URL dans un byte[] d’abord, puis passez‑le à Document.Open(byte[]).
Comment supprimer une page ?
Appelez doc.Pages.Delete(pageNumber) où pageNumber commence à 1.
Le Document est‑il thread-safe ?
Non. Chaque thread doit travailler avec sa propre instance Document.
Résumé de la référence API
| Class / Method | Description |
|---|---|
Document | Objet PDF racine ; contient les pages, les métadonnées et les champs de formulaire |
Document.Open | Fabrique statique pour ouvrir un PDF à partir d’un tableau d’octets |
Document.Save | Sérialiser le document vers un fichier ou un flux |
Page | Page PDF unique avec contenu, annotations et géométrie |
Page.SetMediaBox | Définir la boîte média de la page |
Page.SetCropBox | Définir la zone de recadrage visible |
Page.SetRotation | Faire pivoter la page de 0, 90, 180 ou 270 degrés |
PageCollection | Collection ordonnée de pages dans un document |
PageCollection.Add | Ajouter une page vierge |
OperatorCollection | Opérateurs bruts du flux de contenu pour une page |
FileSpecification | Descripteur de pièce jointe de fichier intégré |
ImageStamp | Cachet d’image superposé pour les pages |
XFormCollection | XObjects de formulaire réutilisables dans le document |