Aspose.PDF FOSS for Python Funzionalità
Aspose.PDF FOSS per Python Caratteristiche
Aspose.PDF FOSS per Python è una libreria pure-Python per creare, aprire, modificare e salvare documenti PDF. Questa pagina esamina le principali aree di funzionalità e le classi che fungono da punti di ingresso. Ogni area è trattata in profondità nella propria pagina della guida per sviluppatori.
Gestione di documenti e pagine
Document è l’oggetto radice per ogni operazione. Costruiscilo senza argomenti per avviare un nuovo documento vuoto, o chiama load_from() per leggere uno esistente da un percorso, byte o stream. document.pages espone il mutable PageCollection, e Page.add_text posiziona testo su una pagina.
from aspose_pdf import Document
document = Document()
page = document.pages.add()
page.add_text("Hello from Aspose.PDF FOSS!", x=72, y=720, font_size=18)
document.save("hello.pdf")Estrazione del Testo e Ricerca
PdfExtractor si lega a un documento e estrae il testo pagina per pagina. bind_pdf() apre la sorgente, extract_text() esegue l’estrazione, e get_text() restituisce il risultato accumulato.
from aspose_pdf import PdfExtractor
extractor = PdfExtractor()
extractor.bind_pdf("hello.pdf")
extractor.extract_text()
print(extractor.get_text())
extractor.close()Per la ricerca e sostituzione posizionate, per frammento, TextFragmentAbsorber espone gli oggetti TextFragment corrispondenti con text_search_options che controlla la sensibilità al maiuscolo/minuscolo e il matching con espressioni regolari.
Rendering della pagina in immagini
Document.save_page_as_image rende una singola pagina direttamente in un file PNG o TIFF a una DPI configurabile. Per un accesso a livello più basso, Page.render restituisce un RasterizedPage con dati pixel grezzi tramite get_pixel() e pixels.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
document.save_page_as_image(0, "page-1.png", dpi=150)Moduli e campi interattivi
AcroForm i campi sono gestiti tramite Document.form, una facciata Form. Form.add_text_field() (e le equivalenti casella di controllo, pulsante radio, elenco e casella combinata) crea un nuovo campo collegato a una pagina e a un rettangolo widget, restituendo un Field. Form.fields elenca tutti i campi attualmente presenti nel documento.
from aspose_pdf import Document
document = Document()
page = document.pages.add()
document.form.add_text_field("customer_name", page, (72, 700, 300, 720))
for field in document.form.fields:
print(field.name, field.field_type)
document.save("form.pdf")Sicurezza, crittografia e firme
Document.encrypt protegge un documento con una password utente (necessaria per aprirlo) e una password proprietario (necessaria per modificare le autorizzazioni); decrypt() e change_passwords() gestiscono la protezione su un documento già aperto. is_encrypted segnala lo stato attuale.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
document.encrypt(user_password="secret", owner_password="owner-secret")
document.save("encrypted.pdf")La verifica della firma digitale è gestita da PdfSignature.validate, che restituisce un ValidationResult che descrive lo stato di fiducia e revoca, e SigningUtils fornisce helper per certificati e firme PKCS#7/CAdES.
PDF/A e PDF/UA Conformità
Document.validate_pdfa esegue un controllo di conformità PDF/A euristico e restituisce un PdfAValidationResult; convert_to_pdfa() tenta di correggere il documento verso quel livello. validate_pdfua() e auto_tag() forniscono il controllo di accessibilità equivalente e il tagging automatico dell’albero di struttura per PDF/UA.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
result = document.validate_pdfa("1b")
if not result.is_valid:
document.convert_to_pdfa("1b")
document.auto_tag()
document.save("compliant.pdf")Suggerimenti e migliori pratiche
- Modifica l’oggetto restituito direttamente da
document.pages,page.annotationsodocument.form— le modifiche apportate a una copia separata di una pagina o campo non vengono riflesse quando chiamisave(). PageCollectionè indicizzato a zero in questo binding Python (document.pages[0]è la prima pagina).- Intercetta
InvalidPasswordExceptionePdfParseExceptionprima del più ampioAsposePdfExceptionquando chiamiload_from()su input non attendibili, così potrai reagire diversamente a una password errata rispetto a un file corrotto. - Chiama
document.optimize()ocompress_streams()prima disave()su documenti fortemente modificati per rimuovere le risorse inutilizzate e ridurre le dimensioni del file. - Passa un
PdfLoadLimitslimitato aload_from()quando elabori PDF da una fonte non attendibile, per limitare la memoria e il conteggio degli oggetti durante l’analisi.
Problemi comuni
| Problema | Causa | Correzione |
|---|---|---|
save() produce un file con modifiche non cambiate | Le modifiche sono state apportate a una copia di pagina, annotazione o campo anziché all’oggetto ottenuto da document.pages, annotations o form | Modifica l’oggetto restituito direttamente da quelle collezioni |
InvalidPasswordException su load_from() | Il documento è protetto da password e non è stata fornita alcuna password, o è stata fornita quella errata | Inserisci la password corretta: document.load_from(path, password="...") |
validate_pdfa() segnala ancora un errore di font dopo convert_to_pdfa() | Nessun file di font corrispondente è stato trovato nella font_lookup_directory fornita | Aggiungi il font mancante alla directory di ricerca, oppure registralo con FontRepository prima della conversione |
| L’immagine renderizzata appare vuota | Indice di pagina errato passato a save_page_as_image() o render() | pages è indicizzato a partire da zero — conferma l’indice e verifica se PdfExtractor restituisce testo per quella pagina |
Il campo aggiunto con Form.add_text_field() non appare nella pagina | Il rettangolo del widget cade al di fuori del media_box della pagina | Conferma che le coordinate del rettangolo siano all’interno del Page.media_box |
FAQ
Il Aspose.PDF FOSS per Python dipende da un motore PDF commerciale?
No. È un motore PDF pure-Python creato da zero, rilasciato sotto licenza MIT. Le sue uniche dipendenze in fase di esecuzione sono cryptography e asn1crypto, usate per la crittografia e la verifica delle firme.
Posso creare un PDF da zero invece di aprirne uno esistente?
Sì. Document() senza argomenti crea un documento vuoto in memoria; chiama document.pages.add() per aggiungere pagine prima del salvataggio.
In quali formati raster posso renderizzare una pagina?
Page.render e Document.save_page_as_image producono output raster PNG o TIFF; il RasterizedPage restituito espone anche i dati pixel grezzi tramite get_pixel() e la proprietà pixels.
Quale eccezione dovrei catturare per errori specifici del pacchetto?
Cattura AsposePdfException. Ogni errore specifico del pacchetto — inclusi errori di parsing (PdfParseException), di password e cifratura (PdfSecurityException, InvalidPasswordException) e di convalida (PdfValidationException) — deriva da esso.
Dove devo andare dopo?
Getting Started copre l’installazione, la licenza e un primo esempio funzionante. Questa guida per sviluppatori continua con argomenti di gestione dei documenti come moduli, allegati di file incorporati, scoperta dei font e creazione di outline/segnalibri.
API Reference Riepilogo
| Classe/Metodo | Descrizione |
|---|---|
Document | Oggetto radice — crea, carica, salva e gestisci un PDF |
Document.pages | Il PageCollection mutabile del documento |
Document.load_from / Document.save | Leggi da o scrivi su un percorso, byte o stream |
Document.encrypt / Document.decrypt | Proteggi con password o rimuovi la protezione |
Document.validate_pdfa / Document.convert_to_pdfa | Verifica di conformità euristica PDF/A e conversione |
Document.validate_pdfua() / Document.auto_tag | Verifica di accessibilità PDF/UA e auto-tagging della struttura |
Page.add_text | Aggiungi testo posizionato a una pagina |
Page.render | Renderizza una pagina in un RasterizedPage |
PdfExtractor | Estrai il testo della pagina e gli allegati incorporati |
PdfFileEditor | Concatena, dividi, inserisci ed elimina pagine tra file |
Form / Field | AcroForm contenitore e campi del modulo individuali |
PdfSignature / SigningUtils | Convalida e creazione della firma digitale |
AsposePdfException | Classe di base per ogni eccezione specifica del pacchetto |