Manipolazione di documenti PDF in Java
Aspose.PDF FOSS per Java fornisce un ricco insieme di API per manipolare documenti PDF esistenti — divisione, concatenazione, estrazione di pagine, inserimento di intervalli di pagine e ridimensionamento del contenuto all’interno delle pagine. Queste funzionalità sono concentrate in PdfFileEditor e nelle sue classi associate ContentsResizeParameters e ContentsResizeValue.
PdfFileEditor: Operazioni di base delle pagine
La classe PdfFileEditor è la struttura centrale per operazioni PDF di alto livello. Fornisce metodi per concatenare più file PDF, estrarre sottoinsiemi di pagine, dividere un documento in pagine individuali e inserire pagine da un documento a un altro in una posizione specifica.
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");
I metodi chiave includono:
concatenate(inputFiles, outputFile)— unisce più documenti in ordineextract(inputFile, startPage, endPage, outputFile)— esporta un intervallo contiguoextract(inputFile, pageNumbers, outputFile)— esporta un insieme non contiguosplitToPages(inputFile)— suddivide in unByteArrayOutputStreamper paginainsert(inputFile, insertPosition, portFile, startPage, endPage, outputFile)— inserisce un intervallodelete(inputFile, pageNumbers, outputFile)— rimuove pagine specificheappend(inputFile, portFile, startPage, endPage, outputFile)— aggiunge un intervallo di pagine
Per file di grandi dimensioni, setUseDiskBuffer(true) passa lo storage interno da heap a disco.
Ridimensionamento del contenuto con ContentsResizeParameters
PdfFileEditor.resizeContents() regola il contenuto entro i confini della pagina esistente. Ogni margine — sinistro, destro, superiore, inferiore — e la larghezza e altezza del contenuto sono specificati come istanze ContentsResizeValue, costruite tramite i metodi factory ContentsResizeValue.percents(value) o 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");
}
Il costruttore a sei argomenti per ContentsResizeParameters accetta i valori nell’ordine: leftMargin, contentsWidth, rightMargin, topMargin, contentsHeight, bottomMargin. Tutti e sei devono sommare al 100% quando si usano valori percentuali, oppure corrispondere alle dimensioni della pagina quando si usano valori assoluti in punti.
Ridimensionamento di pagine specifiche
Quando solo un sottoinsieme di pagine richiede il ridimensionamento, la sovraccarico che accetta un array di interi con i numeri di pagina mira a quelle pagine lasciando inalterate le altre:
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() e isPercent() consentono di ispezionare il valore memorizzato e determinare se rappresenta una percentuale o un conteggio assoluto di punti.
Layout per opuscolo e N-Up
PdfFileEditor include makeBooklet() per imporre le pagine in ordine di opuscolo a doppia faccia e makeNUp() per affiancare più pagine per foglio. Entrambi i metodi accettano percorsi di file o stream:
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: Controllo zoom per pagina
PdfPageEditor mira a proprietà individuali della pagina come il livello di zoom. setZoom() accetta un moltiplicatore float che controlla l’ingrandimento iniziale quando il documento viene aperto in un visualizzatore:
PdfPageEditor pageEditor = new PdfPageEditor();
pageEditor.bindPdf("input.pdf");
pageEditor.setZoom(1.5f);
pageEditor.save("zoomed.pdf");
I valori di 0.0 o negativi vengono rifiutati — getZoom() restituisce 1.0 in tali casi. Questo rende PdfPageEditor adatto per preparare documenti che devono aprirsi a un ingrandimento specifico per casi d’uso di accessibilità o visualizzazione su chiosco.
Guida introduttiva
Aggiungi la dipendenza Maven e importa il pacchetto facades:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-pdf-foss</artifactId>
<version>26.8.0</version>
</dependency>import org.aspose.pdf.*;
import org.aspose.pdf.facades.*;
Aspose.PDF FOSS per Java è rilasciato con licenza MIT ed è disponibile su https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Java.