Aspose.PDF FOSS for Python Funkcje

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.annotations lub document.form — edytowanie oddzielnej kopii strony lub pola nie jest odzwierciedlane, gdy wywołujesz save().
  • PageCollection jest indeksowane od zera w tym powiązaniu Python (document.pages[0] jest pierwszą stroną).
  • Przechwyć InvalidPasswordException i PdfParseException przed szerszym AsposePdfException podczas wywoływania load_from() na niepewnych danych wejściowych, aby móc zareagować inaczej na złe hasło niż na uszkodzony plik.
  • Wywołaj document.optimize() lub compress_streams() przed save() w mocno edytowanych dokumentach, aby usunąć nieużywane zasoby i zmniejszyć rozmiar pliku.
  • Przekaż ograniczony PdfLoadLimits do load_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

ProblemPrzyczynaRozwiązanie
save() tworzy plik z niezmienionymi edycjamiEdycje zostały dokonane na kopii strony, adnotacji lub pola, a nie na obiekcie uzyskanym z document.pages, annotations lub formModyfikuj 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ściweWprowadź 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_directoryDodaj brakującą czcionkę do katalogu wyszukiwania lub zarejestruj ją w FontRepository przed konwersją
Renderowany obraz wygląda na pustyPrzekazano 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 stronieProstokąt widżetu znajduje się poza media_box stronyPotwierdź, ż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/MetodaOpis
DocumentObiekt główny — tworzyć, ładować, zapisywać i zarządzać plikiem PDF
Document.pagesModyfikowalny PageCollection dokumentu
Document.load_from / Document.saveOdczytaj z lub zapisz do ścieżki, bajtów lub strumienia
Document.encrypt / Document.decryptZabezpiecz hasłem lub usuń ochronę
Document.validate_pdfa / Document.convert_to_pdfaHeurystyczne sprawdzanie zgodności PDF/A i konwersja
Document.validate_pdfua() / Document.auto_tagSprawdzanie dostępności PDF/UA i automatyczne tagowanie struktury
Page.add_textDodaj tekst pozycjonowany do strony
Page.renderRenderuj stronę do RasterizedPage
PdfExtractorWyodrębnij tekst strony oraz osadzone załączniki
PdfFileEditorŁącz, dziel, wstawiaj i usuwaj strony pomiędzy plikami
Form / FieldAcroForm kontener i poszczególne pola formularza
PdfSignature / SigningUtilsWalidacja i tworzenie podpisu cyfrowego
AsposePdfExceptionKlasa bazowa dla każdego wyjątku specyficznego dla pakietu

Zobacz także

 Polski