Il livello Facade in Aspose.PDF FOSS per Java
Aspose.PDF FOSS per Java include un livello facades — un insieme di classi ad alto livello, focalizzate sul compito, che offrono operazioni mirate sui documenti PDF senza richiedere la navigazione dell’intero modello di oggetti PDF. Ogni classe facade segue lo stesso schema: associare un documento, eseguire operazioni, salvare il risultato.
Tutte le classi facade risiedono nel pacchetto org.aspose.pdf.facades:
import org.aspose.pdf.facades.*;
PdfAnnotationEditor: Appiattire e rimuovere le annotazioni
PdfAnnotationEditor fornisce operazioni per gestire le annotazioni in blocco: appiattirle nel contenuto della pagina, rimuovere tutte le annotazioni, o rimuovere tipi di annotazione specifici per nome.
try (PdfAnnotationEditor editor = new PdfAnnotationEditor()) {
editor.bindPdf("annotated.pdf");
// Flatten all annotations into the page content stream
editor.flattenAnnotations();
editor.save("flat.pdf");
}
La sovraccarico deleteAnnotations(annotationType) accetta una stringa di tipo annotazione come "Highlight" o "Widget" per rimuovere solo le annotazioni di quel tipo. countAnnotations() restituisce il conteggio totale delle annotazioni su tutte le pagine.
PdfBookmarkEditor: Crea ed elimina i segnalibri
PdfBookmarkEditor gestisce l’albero di struttura (segnalibri) PDF. Espone metodi per creare nuovi segnalibri con createBookmarks(), eliminare tutti i segnalibri con deleteBookmarks() e rimuovere i segnalibri per titolo con deleteBookmarkByTitle().
try (PdfBookmarkEditor bookmarkEditor = new PdfBookmarkEditor()) {
bookmarkEditor.bindPdf("input.pdf");
// Remove all bookmarks from the document
bookmarkEditor.deleteBookmarks();
bookmarkEditor.save("no-bookmarks.pdf");
}
La sovraccarico di bindPdf(document) accetta direttamente un oggetto Document, consentendo l’uso in pipeline in cui il documento è già caricato in memoria.
PdfContentEditor: Sostituzione del testo
PdfContentEditor supporta la sostituzione mirata del testo nei flussi di contenuto PDF. replaceText(searchText, replaceText) sostituisce tutte le occorrenze di una stringa in tutto il documento; replaceText(searchText, pageNumber, replaceText) limita la sostituzione a una singola pagina.
try (PdfContentEditor contentEditor = new PdfContentEditor()) {
contentEditor.bindPdf("template.pdf");
contentEditor.replaceText("{{CompanyName}}", "Acme Corp");
contentEditor.save("output.pdf");
}
TextReplaceOptions controlla se la sostituzione deve preservare il carattere e la dimensione originali o ereditare le proprietà del testo dal contenuto circostante. getStamps(pageNumber) restituisce oggetti StampInfo per tutti i timbri su una pagina, e deleteStampById() rimuove un timbro specifico mediante il suo identificatore.
PdfFileSecurity: Crittografia e Permessi
PdfFileSecurity gestisce la sicurezza a livello di documento, inclusi crittografia, decrittazione e permessi di accesso. Le varianti del costruttore accettano percorsi file, stream o un’istanza Document esistente insieme alla destinazione di output.
DocumentPrivilege rappresenta i permessi di accesso per il documento crittografato. Usa DocumentPrivilege.getForbidAll() per negare tutte le operazioni dell’utente, o DocumentPrivilege.getAllowAll() per concedere l’accesso completo.
try (PdfFileSecurity security = new PdfFileSecurity("input.pdf", "secured.pdf")) {
DocumentPrivilege privilege = DocumentPrivilege.getForbidAll();
privilege.setAllowPrint(true);
security.encryptFile("userPass", "ownerPass", privilege, KeySize.x256);
}
decryptFile(ownerPassword) rimuove la crittografia quando è nota la password del proprietario. L’enum Algorithm fornisce le famiglie di algoritmi RC4 e AES; KeySize specifica la lunghezza della chiave.
PdfFileStamp: Aggiunta di timbri e numeri di pagina
PdfFileStamp aggiunge timbri di testo e immagine alle pagine PDF e può generare automaticamente numeri di pagina formattati. I timbri sono posizionati usando un posizionamento basato su coordinate su ogni pagina.
try (PdfFileStamp stamp = new PdfFileStamp("input.pdf", "stamped.pdf")) {
// Add formatted page numbers to all pages
stamp.addPageNumber("Page #", PageNumberingStyle.NumeralsArabic,
0, 0, 0, 20);
}
PdfExtractor: Estrarre testo e immagini
PdfExtractor fornisce un API pull-based per l’estrazione di testo e immagini dai documenti PDF. Dopo aver associato un documento, chiama extractText() per avviare l’estrazione del testo, quindi itera con hasNextPageText() e getNextPageText():
try (PdfExtractor extractor = new PdfExtractor()) {
extractor.bindPdf("document.pdf");
extractor.extractText();
while (extractor.hasNextPageText()) {
String pageText = extractor.getNextPageText();
// Collect extracted page content
}
}
Per l’estrazione delle immagini, extractImage() avvia l’estrazione e hasNextImage() / getNextImage(outputStream) iterano sulle immagini estratte. I metodi getPassword() e setPassword() supportano i documenti crittografati.
Per iniziare
Aggiungi la dipendenza Maven:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-pdf-foss</artifactId>
<version>26.8.0</version>
</dependency>Tutte le classi facade richiedono Java 11 o versioni successive. Aspose.PDF FOSS per Java è rilasciata con licenza MIT e disponibile su https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Java.