Aspose.PDF FOSS for Python Funkcje
Aspose.PDF FOSS dla Python Funkcje
Aspose.PDF FOSS dla Python jest czysto-Python biblioteką do tworzenia, otwierania, modyfikowania i zapisywania dokumentów PDF. Ta strona przegląda główne obszary możliwości oraz klasy, które służą jako ich punkty wejścia. Każdy obszar jest szczegółowo opisany na własnej stronie przewodnika dewelopera.
Zarządzanie dokumentem i stroną
Document jest obiektem głównym dla każdej operacji. Utwórz go bez argumentów, aby rozpocząć nowy, pusty dokument, lub wywołaj load_from(), aby odczytać istniejący z ścieżki, bajtów lub strumienia. document.pages udostępnia mutowalny PageCollection, a Page.add_text umieszcza pozycjonowany tekst na stronie.
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")Ekstrakcja tekstu i wyszukiwanie
PdfExtractor wiąże się z dokumentem i wyciąga tekst strona po stronie. bind_pdf() otwiera źródło, extract_text() wykonuje ekstrakcję, a get_text() zwraca zgromadzony wynik.
from aspose_pdf import PdfExtractor
extractor = PdfExtractor()
extractor.bind_pdf("hello.pdf")
extractor.extract_text()
print(extractor.get_text())
extractor.close()Do pozycjonowanego, fragmentowego wyszukiwania i zamiany, TextFragmentAbsorber udostępnia dopasowane obiekty TextFragment z text_search_options kontrolującym czułość na wielkość liter i dopasowanie wyrażeń regularnych.
Renderowanie stron do obrazów
Document.save_page_as_image renderuje pojedynczą stronę bezpośrednio do pliku PNG lub TIFF przy konfigurowalnym DPI. Dla dostępu na niższym poziomie, Page.render zwraca RasterizedPage z surowymi danymi pikseli poprzez 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)Formularze i pola interaktywne
AcroForm pola są zarządzane poprzez Document.form, fasadę Form. Form.add_text_field() (oraz odpowiedniki checkbox, radio, list i combo box) tworzy nowe pole powiązane ze stroną i prostokątem widżetu, zwracając Field. Form.fields wymienia każde pole aktualnie znajdujące się w dokumencie.
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")Bezpieczeństwo, szyfrowanie i podpisy
Document.encrypt chroni dokument hasłem użytkownika (wymaganym do otwarcia) oraz hasłem właściciela (wymaganym do zmiany uprawnień); decrypt() i change_passwords() zarządzają ochroną w już otwartym dokumencie. is_encrypted raportuje bieżący stan.
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")Weryfikacja podpisu cyfrowego jest obsługiwana przez PdfSignature.validate, który zwraca ValidationResult opisujący stan zaufania i unieważnienia, a SigningUtils udostępnia pomocnicze narzędzia do certyfikatów oraz podpisywania PKCS#7/CAdES.
Zgodność PDF/A i PDF/UA
Document.validate_pdfa uruchamia heurystyczny PDF/A test zgodności i zwraca PdfAValidationResult; convert_to_pdfa() próbuje naprawić dokument do tego poziomu. validate_pdfua() i auto_tag() zapewniają równoważny test dostępności oraz automatyczne tagowanie drzewa struktury dla 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")Wskazówki i najlepsze praktyki
- Modyfikuj obiekt zwracany bezpośrednio przez
document.pages,page.annotationslubdocument.form— edytowanie oddzielnej kopii strony lub pola nie jest odzwierciedlane, gdy wywołujeszsave(). PageCollectionjest indeksowane od zera w tym powiązaniu Python (document.pages[0]jest pierwszą stroną).- Przechwyć
InvalidPasswordExceptioniPdfParseExceptionprzed szerszymAsposePdfExceptionpodczas wywoływaniaload_from()na niepewnych danych wejściowych, aby móc zareagować inaczej na złe hasło niż na uszkodzony plik. - Wywołaj
document.optimize()lubcompress_streams()przedsave()w mocno edytowanych dokumentach, aby usunąć nieużywane zasoby i zmniejszyć rozmiar pliku. - Przekaż ograniczony
PdfLoadLimitsdoload_from()podczas przetwarzania plików PDF z niepewnego źródła, aby ograniczyć zużycie pamięci i liczbę obiektów podczas parsowania.
Typowe problemy
| Problem | Przyczyna | Rozwiązanie |
|---|---|---|
save() tworzy plik z niezmienionymi edycjami | Edycje zostały dokonane na kopii strony, adnotacji lub pola, a nie na obiekcie uzyskanym z document.pages, annotations lub form | Modyfikuj obiekt zwracany bezpośrednio przez te kolekcje |
InvalidPasswordException na load_from() | Dokument jest chroniony hasłem i nie podano hasła lub podano niewłaściwe | Wprowadź poprawne hasło: document.load_from(path, password="...") |
validate_pdfa() nadal zgłasza błąd czcionki po convert_to_pdfa() | Nie znaleziono pasującego pliku czcionki w dostarczonym font_lookup_directory | Dodaj brakującą czcionkę do katalogu wyszukiwania lub zarejestruj ją w FontRepository przed konwersją |
| Renderowany obraz wygląda na pusty | Przekazano nieprawidłowy indeks strony do save_page_as_image() lub render() | pages jest indeksowane od zera — potwierdź indeks i sprawdź, czy PdfExtractor w ogóle zwraca tekst dla tej strony |
Pole dodane przy użyciu Form.add_text_field() nie pojawia się na stronie | Prostokąt widżetu znajduje się poza media_box strony | Potwierdź, że współrzędne prostokąta mieszczą się w Page.media_box |
FAQ
Czy Aspose.PDF FOSS dla Python zależy od komercyjnego silnika PDF?
Nie. Jest to od podstaw, czysty Python silnik PDF wydany na licencji MIT. Jego jedynymi zależnościami w czasie wykonywania są cryptography i asn1crypto, używane do szyfrowania i weryfikacji podpisu.
Czy mogę stworzyć PDF od podstaw zamiast otwierać istniejący?
Tak. Document() bez argumentów tworzy pusty dokument w pamięci; wywołaj document.pages.add(), aby dodać strony przed zapisem.
Do jakich formatów rastrowych mogę renderować stronę?
Page.render i Document.save_page_as_image generują rastrowy output w formacie PNG lub TIFF; zwrócony RasterizedPage udostępnia także surowe dane pikseli poprzez get_pixel() oraz własność pixels.
Jakiego wyjątku powinienem przechwycić w przypadku błędów specyficznych dla pakietu?
Przechwyć AsposePdfException. Każdy błąd specyficzny dla pakietu — w tym błędy parsowania (PdfParseException), hasła i szyfrowania (PdfSecurityException, InvalidPasswordException) oraz walidacji (PdfValidationException) — pochodzi od niego.
Gdzie mam iść dalej?
Rozpoczęcie obejmuje instalację, licencjonowanie i pierwszy działający przykład. Ten przewodnik dla deweloperów kontynuuje tematy zarządzania dokumentami, takie jak formularze, osadzone załączniki plików, wykrywanie czcionek oraz tworzenie spisu treści/zakładek.
API Reference Podsumowanie
| Klasa/Metoda | Opis |
|---|---|
Document | Obiekt główny — tworzyć, ładować, zapisywać i zarządzać plikiem PDF |
Document.pages | Modyfikowalny PageCollection dokumentu |
Document.load_from / Document.save | Odczytaj z lub zapisz do ścieżki, bajtów lub strumienia |
Document.encrypt / Document.decrypt | Zabezpiecz hasłem lub usuń ochronę |
Document.validate_pdfa / Document.convert_to_pdfa | Heurystyczne sprawdzanie zgodności PDF/A i konwersja |
Document.validate_pdfua() / Document.auto_tag | Sprawdzanie dostępności PDF/UA i automatyczne tagowanie struktury |
Page.add_text | Dodaj tekst pozycjonowany do strony |
Page.render | Renderuj stronę do RasterizedPage |
PdfExtractor | Wyodrębnij tekst strony oraz osadzone załączniki |
PdfFileEditor | Łącz, dziel, wstawiaj i usuwaj strony pomiędzy plikami |
Form / Field | AcroForm kontener i poszczególne pola formularza |
PdfSignature / SigningUtils | Walidacja i tworzenie podpisu cyfrowego |
AsposePdfException | Klasa bazowa dla każdego wyjątku specyficznego dla pakietu |