Aspose.PDF FOSS for Python Funktioner
Aspose.PDF FOSS för Python funktioner
Aspose.PDF FOSS för Python är ett pure-Python bibliotek för att skapa, öppna, modifiera och spara PDF-dokument. Den här sidan ger en översikt över de viktigaste funktionsområdena och de klasser som fungerar som deras ingångspunkter. Varje område behandlas utförligt på sin egen utvecklarguide-sida.
Dokument- och sidhantering
Document är rotobjektet för varje operation. Konstruera det utan argument för att starta ett nytt, tomt dokument, eller anropa load_from() för att läsa ett befintligt från en sökväg, bytes eller stream. document.pages exponerar den muterbara PageCollection, och Page.add_text placerar positionerad text på en sida.
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")Textutdrag och sökning
PdfExtractor bindar till ett dokument och drar ut text sida för sida. bind_pdf() öppnar källan, extract_text() utför utdraget, och get_text() returnerar det ackumulerade resultatet.
from aspose_pdf import PdfExtractor
extractor = PdfExtractor()
extractor.bind_pdf("hello.pdf")
extractor.extract_text()
print(extractor.get_text())
extractor.close()För positionerad, per-fragment sökning och ersättning exponerar TextFragmentAbsorber matchade TextFragment-objekt med text_search_options som styr skiftlägeskänslighet och reguljära uttryck-matchning.
Sidrendering till bilder
Document.save_page_as_image renderar en enskild sida direkt till en PNG- eller TIFF-fil med en konfigurerbar DPI. För lägre nivååtkomst returnerar Page.render en RasterizedPage med rå pixeldata via get_pixel() och pixels.
from aspose_pdf import Document
document = Document()
document.load_from("hello.pdf")
document.save_page_as_image(0, "page-1.png", dpi=150)Formulär och interaktiva fält
AcroForm-fält hanteras via Document.form, en Form-fasad. Form.add_text_field() (och motsvarande kryssruta, radioknapp, lista och kombinationsruta) skapar ett nytt fält kopplat till en sida och en widgetrektangel, och returnerar en Field. Form.fields listar alla fält som för närvarande finns i dokumentet.
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")Säkerhet, kryptering och signaturer
Document.encrypt skyddar ett dokument med ett användarlösenord (som behövs för att öppna det) och ett ägarlösenord (som behövs för att ändra behörigheter); decrypt() och change_passwords() hanterar skyddet på ett redan öppnat dokument. is_encrypted rapporterar det aktuella tillståndet.
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")Digital signaturverifiering hanteras av PdfSignature.validate, som returnerar en ValidationResult som beskriver förtroende- och återkallningsstatus, och SigningUtils tillhandahåller certifikat- och PKCS#7/CAdES-signeringshjälpmedel.
PDF/A och PDF/UA efterlevnad
Document.validate_pdfa kör en heuristisk PDF/A efterlevnadskontroll och returnerar en PdfAValidationResult; convert_to_pdfa() försöker åtgärda dokumentet mot den nivån. validate_pdfua() och auto_tag() tillhandahåller den motsvarande tillgänglighetskontrollen och automatisk strukturträd-taggning för 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")Tips och bästa praxis
- Ändra objektet som returneras direkt av
document.pages,page.annotationsellerdocument.form— ändringar som görs i en separat kopia av en sida eller ett fält återspeglas inte när du anroparsave(). PageCollectionär nollindexerad i denna Python-bindning (document.pages[0]är den första sidan).- Fånga
InvalidPasswordExceptionochPdfParseExceptioninnan den bredareAsposePdfExceptionnär du anroparload_from()på opålitlig indata, så att du kan reagera annorlunda på ett felaktigt lösenord än på en korrupt fil. - Anropa
document.optimize()ellercompress_streams()innansave()på kraftigt redigerade dokument för att ta bort oanvända resurser och minska filstorleken. - Skicka en begränsad
PdfLoadLimitstillload_from()när du bearbetar PDF:er från en opålitlig källa, för att begränsa minne och objektantal under parsning.
Vanliga problem
| Problem | Orsak | Lösning |
|---|---|---|
save() producerar en fil med oförändrade redigeringar | Redigeringar gjordes på en sida, annotation eller fältkopia snarare än objektet som erhölls från document.pages, annotations eller form | Ändra objektet som returneras direkt av dessa samlingar |
InvalidPasswordException på load_from() | Dokumentet är lösenordsskyddat och inget lösenord, eller fel lösenord, angavs | Ange det korrekta lösenordet: document.load_from(path, password="...") |
validate_pdfa() rapporterar fortfarande ett teckensnittsfel efter convert_to_pdfa() | Ingen matchande teckensnittfil hittades i den angivna font_lookup_directory | Lägg till det saknade teckensnittet i uppslagskatalogen, eller registrera det med FontRepository innan konvertering |
| Renderad bild ser tom ut | Fel sidindex skickades till save_page_as_image() eller render() | pages är nollindexerad — bekräfta indexet och kontrollera om PdfExtractor returnerar text för den sidan alls |
Fältet som lagts till med Form.add_text_field() visas inte på sidan | Widget-rectangeln hamnar utanför sidans media_box | Bekräfta att rektangelkoordinaterna ligger inom Page.media_box |
FAQ
Beror Aspose.PDF FOSS för Python på en kommersiell PDF-motor?
Nej. Det är en från grunden, ren-Python PDF-motor som släpps under MIT-licensen. Dess enda körningsberoenden är cryptography och asn1crypto, som används för kryptering och signaturverifiering.
Kan jag bygga en PDF från grunden istället för att öppna en befintlig?
Ja. Document() utan argument skapar ett tomt, minnesbaserat dokument; anropa document.pages.add() för att lägga till sidor innan du sparar.
Vilka rasterformat kan jag rendera en sida till?
Page.render och Document.save_page_as_image producerar PNG- eller TIFF-rasterutdata; det returnerade RasterizedPage exponerar också rå pixeldata via get_pixel() och egenskapen pixels.
Vilket undantag bör jag fånga för paketspecifika fel?
Fånga AsposePdfException. Varje paket-specifikt fel — inklusive parsning (PdfParseException), lösenord och kryptering (PdfSecurityException, InvalidPasswordException) samt valideringsfel (PdfValidationException) — härrör från det.
Vart går jag härnäst?
Kom igång täcker installation, licensiering och ett första fungerande exempel. Denna utvecklarguide fortsätter med dokumenthanteringsämnen såsom formulär, inbäddade filbilagor, teckensnittsupptäckt och skapande av disposition/bokmärkning.
API Reference Sammanfattning
| Klass/Metod | Beskrivning |
|---|---|
Document | Rotobjekt — skapa, ladda, spara och hantera en PDF |
Document.pages | Dokumentets mutabla PageCollection |
Document.load_from / Document.save | Läs från eller skriv till en sökväg, byte eller ström |
Document.encrypt / Document.decrypt | Lösenordsskydda eller ta bort skyddet |
Document.validate_pdfa / Document.convert_to_pdfa | Heuristisk PDF/A efterlevnadskontroll och konvertering |
Document.validate_pdfua() / Document.auto_tag | PDF/UA tillgänglighetskontroll och automatisk strukturtaggning |
Page.add_text | Lägg till placerad text på en sida |
Page.render | Rendera en sida till en RasterizedPage |
PdfExtractor | Extrahera sidtext och inbäddade bilagor |
PdfFileEditor | Kombinera, dela, infoga och radera sidor i flera filer |
Form / Field | AcroForm behållare och individuella formulärfält |
PdfSignature / SigningUtils | Digital signaturvalidering och skapande |
AsposePdfException | Bas-klass för varje paket-specifikt undantag |