Üretilen Uyumluluk Modülü ile Python içinde Belgeler Nasıl Oluşturulur

Üretilen Uyumluluk Modülü ile Python içinde Belgeler Nasıl Oluşturulur

Aspose.PDF FOSS for Python, generated uyumluluk alt paketini (aspose_pdf.generated) sunar; bu paket, ana API yüzeyinin kararlı bir alt kümesini yansıtır — temel yaşam döngüsü işlemlerine sahip bir Document sınıfı, ayrıca UnsignedContent/UnsignedContentAbsorber ve PdfAValidateOptions/PdfAValidationResult. Bu, tam özellikli üst seviye sınıflar yerine bu daha dar yüzeyi açıkça isteyen çağırıcılar için mevcuttur ve sınıfları import aspose_pdf tarafından otomatik olarak içe aktarılmaz — onları doğrudan aspose_pdf.generated.* üzerinden içe aktarabilirsiniz. Paket saf Python’dir ve aşağıdaki komutla kurulmaktadır.

Adım Adım Kılavuz

Adım 1: Paketi Yükle

Aspose.PDF FOSS paketini kurun:

git clone https://github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python.git
cd Aspose-PDF-FOSS-for-Python
pip install -e .

Oluşturulan Document‘ı içe aktararak ve bir onay mesajı yazarak kurulumu doğrulayın:

import aspose_pdf
from aspose_pdf.generated.document import Document
print("aspose-pdf-foss-for-python is ready.")

Adım 2: Gerekli Sınıfları İçeri Aktar

generated uyumluluk sınıfları aspose_pdf.generated.document, aspose_pdf.generated.forms ve aspose_pdf.generated.pdfa içinde bulunur — alt modül aracılığıyla açıkça içe aktarın:

import aspose_pdf
from aspose_pdf.generated.document import Document
from aspose_pdf.generated.forms import UnsignedContent, UnsignedContentAbsorber
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult

Adım 3: Bir Belge Oluştur ve Yükle

Document(source), bir kaynak sağlandığında hemen yüklenir; Document()‘i argüman olmadan çağırmak, daha sonra load_from ile yükleyebileceğiniz boş bir örnek oluşturur. İkisi de bir dosya yolu, bytes veya ikili akış kabul eder:

from aspose_pdf.generated.document import Document

document = Document("report.pdf")
print(f"Loaded {len(document.pages)} page(s)")

empty_doc = Document()
empty_doc.load_from("report.pdf")

Adım 7: İmzalanmamış Form İçeriğini Çıkar

UnsignedContentAbsorber, dijital imzanın bir parçası olmayan sayfaları, form alanlarını ve ek açıklamaları çıkarır. Çıkarma işlemini başlatmak için extract()‘i, bunun çalışıp çalışmadığını kontrol etmek için has_extracted()‘yi ve yeniden çıkarmadan sonucu tekrar almak için get_extracted()‘ü çağırın:

from aspose_pdf.generated.forms import UnsignedContentAbsorber

absorber = UnsignedContentAbsorber()
unsigned = absorber.extract()
print(f"Unsigned pages: {len(unsigned.pages)}")
print(f"Unsigned form fields: {len(unsigned.form_fields)}")

if absorber.has_extracted():
    same_result = absorber.get_extracted()

Adım 8: Bir UnsignedContent Kapsayıcısını Manuel Olarak Oluştur

UnsignedContent, aynı zamanda add_page, add_form_field ve add_annotation ile kendiniz doldurabileceğiniz basit bir kapsayıcıdır — her birinin eşleşen bir remove_* yöntemi vardır ve reset() üç koleksiyonu bir anda temizler:

from aspose_pdf.generated.forms import UnsignedContent

content = UnsignedContent()
content.add_page("page-1")
content.add_annotation("signature-placeholder")
print(content)  # UnsignedContent(pages=1, form_fields=0, annotations=1)

content.remove_annotation("signature-placeholder")
content.reset()

Adım 9: PDF/A Doğrulamasını Yapılandır ve Çalıştır

PdfAValidateOptions, bir doğrulama çalışması için girişleri ve ayarları toplar. add_input(source), bir girişi kaydeder, set_option(key, value), adlandırılmış bir seçeneği saklar ve get_options(), saklanan seçeneklerin bir kopyasını döndürür. PdfAValidationResult, sonucu tutar — add_error(message), sonucu geçersiz olarak işaretler ve errors‘ye ekler, ve to_dict(), is_valid ve errors‘u basit bir sözlük olarak oluşturur:

from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult

options = PdfAValidateOptions()
options.add_input("report.pdf")
options.set_option("pdfa_version", "1b")
print(options.get_options())

result = PdfAValidationResult()
result.add_error("Font 'Arial' is not embedded")
print(result.is_valid)   # False
print(result.to_dict())

Yaygın Sorunlar ve Çözümler

ImportError or AttributeError erişirken aspose_pdf.generated

generated alt paketi import aspose_pdf tarafından yeniden dışa aktarılmaz — her sınıfı kendi belirli alt modülünden, örneğin from aspose_pdf.generated.document import Document, içe aktarın; basit bir import aspose_pdf‘den sonra aspose_pdf.generated.Document‘ün çalışmasını beklemek yerine.

Oluşturulanı Karıştırma Document ana ile aspose_pdf.Document

aspose_pdf.Document (import aspose_pdf tarafından yeniden dışa aktarılan üst düzey sınıf) daha geniş bir arayüze sahiptir — aspose_pdf.generated.document.Document tarafından uygulanmayan validate_pdfa, iter_pages ve redact_text gibi yöntemler ekler. Eğer bir yöntem oluşturulan Document‘da eksikse, bunun yerine üst düzey Document sınıfına ait olup olmadığını kontrol edin.

save() raises AsposePdfException: Cannot save a disposed document

close()/dispose() belgenin iç durumunu kalıcı olarak serbest bırakır — atılmış bir Document daha sonra kaydedilemez, optimize edilemez veya onarılamaz. close() çağırmadan önce tüm kalan işlemleri gerçekleştirin veya kaynaktan yeni bir Document(...) çağrısıyla yeniden yükleyin.

change_passwords raises PdfSecurityException: Document is not encrypted

change_passwords yalnızca zaten şifrelenmiş bir belgede parolayı döndürür. Önce encrypt(password) çağırın veya parolayı değiştirmeye çalışmadan önce document.is_encrypted‘yi kontrol edin.

PdfAValidationResult.add_error raises TypeError

add_error bir str argümanı gerektirir. İstisna nesnelerini veya diğer hata ayrıntılarını add_error‘e geçirmeden önce bir dizgeye (str(error)) dönüştürün.

Sıkça Sorulan Sorular

Neden aspose_pdf.generated, ana aspose_pdf.Document ile birlikte var?

Bu, Aspose.PDF API’nin daha dar, kararlı bir alt kümesini yansıtır, bu azaltılmış yüzeye karşı yazılmış kod için. Bu uyumluluk alt kümesini özellikle gerektirmeyen yeni kod genellikle daha fazla işlemi destekleyen üst düzey aspose_pdf.Document‘ı kullanmalıdır (PDF/A dönüşümü, sayfa yineleme, metin redaksiyonu ve diğerleri).

UnsignedContentAbsorber.extract() bir Document taramak için kabul eder mi?

extract(), döndürülen UnsignedContent‘in pages, form_fields ve annotations koleksiyonlarını doldurmak için kullanılan konumsal ve anahtar kelime argümanlarını kabul eder — temsili istediğiniz koleksiyonları anahtar kelime argümanları olarak geçirin (pages=, form_fields=, annotations=).

Herhangi bir şey çıkarmadan önce UnsignedContentAbsorber üzerinde reset()‘ı çağırırsam ne olur?

Daha önce çıkarılmış herhangi bir sonucu temizler. get_extracted() daha sonra None‘i döndürür ve has_extracted() False‘i döndürür, extract() tekrar çağrılana kadar.

PdfAValidateOptions.add_input birden fazla kez çağrılabilir mi?

Evet — her çağrı inputs listesine başka bir giriş ekler ve self‘i döndürür, böylece çağrılar zincirlenebilir: options.add_input("a.pdf").add_input("b.pdf").

Oluşturulan Document üzerinde close(), dispose()‘den farklı mı?

Hayır — close() aynı argümanlarla dispose()‘i çağıran doğrudan bir takma addır; her iki ad da belgenin kaynaklarını serbest bırakır.

Ayrıca Bakınız

 Türkçe