Aspose.PDF FOSS for Python Funcționalităţi
Aspose.PDF FOSS pentru Python Caracteristici
Aspose.PDF FOSS pentru Python este o bibliotecă pure-Python pentru crearea, deschiderea, modificarea și salvarea documentelor PDF. Această pagină prezintă principalele domenii de capabilități și clasele care servesc ca puncte de intrare. Fiecare domeniu este acoperit în profunzime pe propria pagină de ghid pentru dezvoltatori.
Gestionarea documentelor și a paginilor
Document este obiectul rădăcină pentru fiecare operație. Construiți-l fără argumente pentru a începe un document nou, gol, sau apelați load_from() pentru a citi unul existent dintr-o cale, din bytes sau dintr-un flux. document.pages expune PageCollection mutabil, iar Page.add_text plasează text poziționat pe o pagină.
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")Extracția textului și căutarea
PdfExtractor se leagă de un document și extrage textul pagină cu pagină. bind_pdf() deschide sursa, extract_text() efectuează extracția și get_text() returnează rezultatul acumulat.
from aspose_pdf import PdfExtractor
extractor = PdfExtractor()
extractor.bind_pdf("hello.pdf")
extractor.extract_text()
print(extractor.get_text())
extractor.close()Pentru căutare și înlocuire poziționată, pe fragment, TextFragmentAbsorber expune obiectele TextFragment potrivite, cu text_search_options controlând sensibilitatea la majuscule și potrivirea prin expresii regulate.
Redarea paginii în imagini
Document.save_page_as_image redă o singură pagină direct într-un fișier PNG sau TIFF la un DPI configurabil. Pentru acces la nivel inferior, Page.render returnează un RasterizedPage cu date brute de pixeli prin get_pixel() și pixels.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
document.save_page_as_image(0, "page-1.png", dpi=150)Formulare și câmpuri interactive
Câmpurile AcroForm sunt gestionate prin Document.form, o fațadă Form. Form.add_text_field() (și echivalentele pentru casetă de bifare, buton radio, listă și casetă combinată) creează un nou câmp legat de o pagină și de un dreptunghi widget, returnând un Field. Form.fields enumeră fiecare câmp prezent în document.
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")Securitate, criptare și semnături
Document.encrypt protejează un document cu o parolă de utilizator (necesară pentru a-l deschide) și o parolă de proprietar (necesară pentru a schimba permisiunile); decrypt() și change_passwords() gestionează protecția pe un document deja deschis. is_encrypted raportează starea curentă.
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")Verificarea semnăturii digitale este gestionată de PdfSignature.validate, care returnează un ValidationResult descriind nivelul de încredere și starea de revocare, iar SigningUtils furnizează asistenți pentru certificare și semnare PKCS#7/CAdES.
PDF/A și PDF/UA Conformitate
Document.validate_pdfa rulează o verificare de conformitate euristică PDF/A și returnează un PdfAValidationResult; convert_to_pdfa() încearcă să remedieze documentul către acel nivel. validate_pdfua() și auto_tag() furnizează verificarea echivalentă de accesibilitate și etichetarea automată a arborelui de structură pentru 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")Sfaturi și cele mai bune practici
- Modificați obiectul returnat direct de
document.pages,page.annotationssaudocument.form— modificările efectuate pe o copie separată a unei pagini sau a unui câmp nu sunt reflectate când apelațisave(). PageCollectioneste indexat de la zero în această legătură Python (document.pages[0]este prima pagină).- Interceptați
InvalidPasswordExceptionșiPdfParseExceptionînainte deAsposePdfExceptionmai larg atunci când apelațiload_from()pe intrări neîncredere, astfel încât să puteți reacționa diferit la o parolă incorectă decât la un fișier corupt. - Apelați
document.optimize()saucompress_streams()înainte desave()pe documente editate intens pentru a elimina resursele neutilizate și a micșora dimensiunea fișierului. - Transmiteți un
PdfLoadLimitslimitat cătreload_from()când procesați PDF-uri dintr-o sursă neîncredere, pentru a limita memoria și numărul de obiecte în timpul parsării.
Probleme comune
| Problemă | Cauză | Remediere |
|---|---|---|
save() produce un fișier cu editări neschimbate | Editări au fost făcute pe o copie a paginii, adnotării sau câmpului, în loc de obiectul obținut din document.pages, annotations sau form | Modificați obiectul returnat direct de acele colecții |
InvalidPasswordException pe load_from() | Documentul este protejat prin parolă și nu a fost furnizată nicio parolă, sau a fost furnizată una greșită | Introduceţi parola corectă: document.load_from(path, password="...") |
validate_pdfa() raportează în continuare o eroare de font după convert_to_pdfa() | Nu a fost găsit niciun fișier de font corespunzător în font_lookup_directory furnizat | Adăugaţi fontul lipsă în directorul de căutare sau înregistraţi-l cu FontRepository înainte de conversie |
| Imaginea redată pare goală | Index de pagină greșit transmis către save_page_as_image() sau render() | pages este indexat de la zero — confirmaţi indexul și verificaţi dacă PdfExtractor returnează text pentru acea pagină |
Câmpul adăugat cu Form.add_text_field() nu apare pe pagină | Dreptunghiul widgetului cade în afara media_box paginii | Confirmă că coordonatele dreptunghiului sunt în interiorul Page.media_box |
FAQ
Depinde Aspose.PDF FOSS pentru Python de un motor PDF comercial?
Nu. Este un motor PDF dezvoltat de la zero, pure-Python, lansat sub licența MIT. Singurele sale dependențe la rulare sunt cryptography și asn1crypto, utilizate pentru criptare și verificarea semnăturii.
Pot să construiesc un PDF de la zero în loc să deschid unul existent?
Da. Document() fără argumente creează un document gol, în memorie; apelează document.pages.add() pentru a adăuga pagini înainte de salvare.
În ce formate raster pot reda o pagină?
Page.render și Document.save_page_as_image produc ieșire raster PNG sau TIFF; RasterizedPage returnat expune, de asemenea, date brute de pixeli prin get_pixel() și proprietatea pixels.
Ce excepție ar trebui să prind pentru erorile specifice pachetului?
Prinde AsposePdfException. Fiecare eroare specifică pachetului — inclusiv parsarea (PdfParseException), parola și criptarea (PdfSecurityException, InvalidPasswordException) și eșecurile de validare (PdfValidationException) — derivă din ea.
Unde merg mai departe?
Getting Started acoperă instalarea, licențierea și un prim exemplu funcțional. Acest ghid pentru dezvoltatori continuă cu subiecte de gestionare a documentelor, cum ar fi formularele, atașamentele de fișiere încorporate, descoperirea fonturilor și crearea de outline/bookmark-uri.
API Reference Rezumat
| Clasă/Metodă | Descriere: |
|---|---|
Document | Obiectul rădăcină — creează, încarcă, salvează și administrează un PDF |
Document.pages | PageCollection mutabil al documentului |
Document.load_from / Document.save | Citește din sau scrie către o cale, octeți sau flux |
Document.encrypt / Document.decrypt | Protejează cu parolă sau elimină protecția |
Document.validate_pdfa / Document.convert_to_pdfa | Verificare euristică a conformității PDF/A și conversie |
Document.validate_pdfua() / Document.auto_tag | Verificare a accesibilității PDF/UA și etichetare automată a structurii |
Page.add_text | Adăugați text poziționat pe o pagină |
Page.render | Redă o pagină într-un RasterizedPage |
PdfExtractor | Extrage textul paginii și atașamentele încorporate |
PdfFileEditor | Concatenează, împarte, inserează și șterge pagini între fișiere |
Form / Field | AcroForm container și câmpuri de formular individuale |
PdfSignature / SigningUtils | Validarea și crearea semnăturii digitale |
AsposePdfException | Clasă de bază pentru fiecare excepție specifică pachetului |