Manipulation de documents PDF en Java

Aspose.PDF FOSS for Java provides a rich set of APIs for manipulating existing PDF documents — divisant, concatenant et extraitant des pages, insérant les rangs de page ; et réaffichage de contenu dans les pages. Ces capacités sont concentrées sur PdfFileEditor et ses classes de compagnon, ContentsResizeParameters et ContentsResizeValue.

PdfFileEditor : Opérations de page d’origine

Le PdfFileEditor classe est la facilité centrale pour les opérations de fichiers PDF à haut niveau. Il fournit des méthodes pour concatener plusieurs fichiers PDF, extraire les sous-sets de page, Diviser un document en différentes pages et insérer des pages d’un seul document. dans une autre position.

PdfFileEditor editor = new PdfFileEditor();
// Concatenate two documents into one
editor.concatenate("first.pdf", "second.pdf", "combined.pdf");
// Extract pages 2 through 5 to a new file
editor.extract("source.pdf", 2, 5, "extracted.pdf");

Les méthodes clés comprennent :

  • concatenate(inputFiles, outputFile) - réunir plusieurs documents pour que les
  • extract(inputFile, startPage, endPage, outputFile) - Exporter une gamme contagieuse
  • extract(inputFile, pageNumbers, outputFile) - Exportation d’un ensemble non cohérent
  • splitToPages(inputFile) - se diviser en une ByteArrayOutputStream par page
  • insert(inputFile, insertPosition, portFile, startPage, endPage, outputFile) - Insérer un range
  • delete(inputFile, pageNumbers, outputFile) - Supprimer des pages spécifiques
  • append(inputFile, portFile, startPage, endPage, outputFile) - Appendicez une page de portée

Pour les grands fichiers, setUseDiskBuffer(true) Transformer le stockage interne de la cache au disque.

Résumé de contenu avec contenusRésiméparamètres

PdfFileEditor.resizeContents() Ajuste le contenu dans les limites de page existantes. Chaque marge - gauche, droite, haut, bas - et la largeur et l’altitude du contenu sont spécifiée comme ContentsResizeValue Les modèles, construits par les méthodes de fabrication ContentsResizeValue.percents(value) ou ContentsResizeValue.units(value).

try (Document doc = new Document("input.pdf")) {
    PdfFileEditor editor = new PdfFileEditor();
    ContentsResizeParameters params = new ContentsResizeParameters(
        ContentsResizeValue.percents(10),   // left margin
        ContentsResizeValue.percents(80),   // content width
        ContentsResizeValue.percents(10),   // right margin
        ContentsResizeValue.percents(10),   // top margin
        ContentsResizeValue.percents(80),   // content height
        ContentsResizeValue.percents(10)    // bottom margin
    );
    editor.resizeContents(doc, params);
    doc.save("resized.pdf");
}

Le constructeur de six arguments pour ContentsResizeParameters accepte les valeurs dans le commande: gaucheMargin, contenusL’aube, droiteMargine, topMarge, contentHeight, bottomMargen. Tous les six doivent être cumulés à 100% lors de l’utilisation des valeurs basées sur le pourcentage, ou correspondant à la page. Les valeurs de points absolus sont utilisées.

Réservation de pages spécifiques

Lorsqu’un sous-sets de pages ne nécessite que la reprise, le surcharge qui accepte une série complète de numéros de page cible ces pages tout en laissant les autres inéchangeables :

PdfFileEditor editor = new PdfFileEditor();
ContentsResizeParameters params = new ContentsResizeParameters(
    ContentsResizeValue.units(28),   // left margin in points
    ContentsResizeValue.units(540),  // content width
    ContentsResizeValue.units(28),   // right margin
    ContentsResizeValue.units(28),   // top margin
    ContentsResizeValue.units(786),  // content height
    ContentsResizeValue.units(28)    // bottom margin
);
// Only resize pages 1 and 3
editor.resizeContents(doc, new int[]{1, 3}, params);

ContentsResizeValue.getValue() et isPercent() Permet de vérifier les stocks - déterminer si elle représente un pourcentage ou un nombre de points absolu.

Le Booklet et le N-Up Layout

PdfFileEditor incluent makeBooklet() Pour imposer des pages dans l’ordre de brochure à deux côtés et makeNUp() pour la mise à jour de plusieurs pages par feuille. les deux méthodes acceptent des voies de fichier ou Les Streams :

PdfFileEditor editor = new PdfFileEditor();
// Print as a folded booklet
editor.makeBooklet("input.pdf", "booklet.pdf");
// Tile 2 columns × 3 rows per sheet
editor.makeNUp("input.pdf", "nup.pdf", 2, 3);

PdfPageEditor : Contrôle de Zoom par page

PdfPageEditor Il vise les propriétés individuelles de la page, telles que le niveau de zoom. setZoom() accepte un multiplier de flate qui contrôle la magnification initiale lorsque le document est Il est ouvert dans un spectateur :

PdfPageEditor pageEditor = new PdfPageEditor();
pageEditor.bindPdf("input.pdf");
pageEditor.setZoom(1.5f);
pageEditor.save("zoomed.pdf");

Les valeurs de 0.0 ou négatifs sont rejetés - getZoom() Retourner 1.0 dans ces cas. Cela fait PdfPageEditor Il est adapté à la préparation de documents qui doivent être ouverts dans un la magnification pour l’accessibilité ou les cas d’utilisation de l’affichage du kiosk.

Pour commencer

Ajouter la dépendance Maven et importer le pack facades :

<dependency>
  <groupId>org.aspose</groupId>
  <artifactId>aspose-pdf</artifactId>
  <version>0.1.0-alpha</version>
</dependency>
import org.aspose.pdf.*;
import org.aspose.pdf.facades.*;

Aspose.PDF FOSS for Java is MIT-licensed and available at https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Java.

Ressources associées