Giriş
document.py, Python’ın Document sınıfı için Aspose.PDF FOSS’i tanımlayan modül, onu “yerel PDF motorunu saran” bir sınıf olarak tanımlar. Somut olarak, bu motor aspose_pdf.engine.simple_pdf.SimplePdf‘dır: Document.load_from bir SimplePdf örneği oluşturur ve belge düzeyindeki her işlem — kaydetme, optimize etme, onarma, şifreleme — ona delege edilir. Renderleme için de aynı şey geçerlidir: Page.render ve Document.render_page ikisi de aspose_pdf.engine.rasterizer‘ye çağrı yapar.
Çoğu uygulama kodu Document ve Page‘in ötesine bakmak zorunda kalmaz. Ancak aspose_pdf.engine, sıradan bir, içe aktarılabilir Python paketidir ve cephe altında bulunan birkaç bileşen kendi başına kullanışlıdır: bir sayfayı piksellere dönüştüren rasterleştirici, PDF içerik akışlarını sıkıştıran ve açan akış-filtresi codec’leri ve PDF güvenlik işleyicilerinin dayandığı AES-CBC ve RC4 algoritmalarını uygulayan şifreleme yardımcı programları. Ana paketten farklı olarak, aspose_pdf.engine altmodülleri üst düzey aspose_pdf‘den yeniden dışa aktarılmaz — tek istisna RasterizedPage, aspose_pdf.visualization aracılığıyla köprülenmiştir — bu yüzden aşağıdakiler tam noktalı yoluyla içe aktarılır, örneğin from aspose_pdf.engine.filters import StreamDecoder.
Aspose.PDF FOSS, Python için bir Python paketidir, aspose-pdf-foss-for-python, MIT lisansı altında yayınlanmıştır ve Python 3.11 veya daha yeni bir sürümünü gerektirir. Üst düzey modül adı aspose_pdf‘dır. Çekirdek paket yalnızca cryptography ve asn1crypto‘e bağımlıdır; isteğe bağlı ekler Pillow tabanlı görüntü çözümleme, Brotli tabanlı WOFF2 font desteği ve HarfBuzz tabanlı karmaşık metin yerleşimi ekler.
Temel Özellikler
Rasterleştirme Motoru ile Sayfaları Renderleme
Document.render_page(page_index, dpi=..., scale=..., background=..., antialias=...) ve onun Page.render karşılığı her ikisi de bir RasterizedPage döndürür — motorun rasterleştiricisi tarafından üretilen paketlenmiş bir RGB raster. RasterizedPage, width, height ve ham pixels baytları ortaya koyar, ayrıca tek piksel araması için get_pixel(), bellek içi kodlanmış baytlar için to_png() / to_tiff() ve doğrudan bir .png veya .tif/.tiff dosyası yazmak için save() sunar. Nesneyle bellekte çalışmak — yalnızca diske kaydetmek yerine —, bir çağıranın pikselleri tutup tutmayacağına karar vermeden önce incelemek veya dönüştürmek istediğinde faydalıdır.
from aspose_pdf import Document
with Document() as document:
page = document.pages.add()
page.add_text("Rendered by the engine", x=72, y=700, font_size=18)
raster = document.render_page(0, dpi=150)
print(raster.width, raster.height)
corner = raster.get_pixel(0, 0)
print("top-left pixel:", corner)
with open("page-0.png", "wb") as handle:
handle.write(raster.to_png())
raster.save("page-0.tiff")
Akış Filtre Motoru
PDF içeriği ve nesne akışları, FlateDecode ve LZWDecode gibi adlandırılmış filtrelerle sıkıştırılır. aspose_pdf.engine.filters.StreamEncoder.encode(data, filters, decode_parms=None) ve StreamDecoder.decode(data, filters, decode_parms, *, limits=None, max_output_bytes=None), bu filtre zincirinin kodlama ve kod çözme taraflarını uygular — motorun bir belgenin akışlarını yazarken ve okurken dahili olarak kullandığı aynı codec’ler. İkisi de tek bir filtre adı veya zincirli filtreler için bir liste kabul eder ve StreamDecoder.decode(), tanınmayan bir filtre adıyla karşılaştığında sessizce hatalı baytlar döndürmek yerine PdfValidationException hatasını yükseltir.
from aspose_pdf.engine.filters import StreamDecoder, StreamEncoder
raw = b"Sample content-stream payload.\n" * 40
compressed = StreamEncoder.encode(raw, "FlateDecode")
restored = StreamDecoder.decode(compressed, "FlateDecode", None)
assert restored == raw
print(f"{len(raw)} bytes -> {len(compressed)} bytes with FlateDecode")
Şifreleme Motoru
aspose_pdf.engine.encryption.EncryptionUtils, SimplePdf sınıfının her şifreleme ile ilgili işlemde çağırdığı statik-metot yardımcı sınıfıdır: Document.encrypt, decrypt() ve change_passwords() hepsi içsel olarak EncryptionUtils çağrılarına dönüşür. Yöntemleri AES-CBC ve RC4 şifrelemeyi doğrudan uygular (encrypt_aes_cbc, decrypt_aes_cbc, encrypt_rc4, decrypt_rc4), PDF standart güvenlik işleyicisi revizyonları için anahtar türetmeyi (compute_owner_key_v4, compute_user_key_v4, compute_user_owner_keys_v6) ve yeni belgelerin ihtiyaç duyduğu rastgele 16-baytlık kimlik için generate_file_id() sağlar.
from aspose_pdf.engine.encryption import EncryptionUtils
key = b"0123456789ABCDEF" # 16 bytes -> AES-128
ciphertext = EncryptionUtils.encrypt_aes_cbc(key, b"Reviewer notes: approved")
plaintext = EncryptionUtils.decrypt_aes_cbc(key, ciphertext)
assert plaintext == b"Reviewer notes: approved"
file_id = EncryptionUtils.generate_file_id()
print(file_id.hex())
Hızlı Başlangıç
Paketi kurun, ardından tek bir betikte motor katmanından doğrudan bir sayfa render edin.
asposefoss/pdf is not yet published — build from source until it ships. See the project README for build instructions.from aspose_pdf import Document
with Document() as document:
page = document.pages.add()
page.add_text("Engine-rendered page", x=72, y=740, font_size=20)
raster = document.render_page(0, dpi=150)
raster.save("engine-render.png")
document.save("engine-quickstart.pdf")
print("Saved engine-quickstart.pdf and engine-render.png")
Desteklenen Formatlar
| Biçim | Uzantı | Oku | Yaz |
|---|---|---|---|
| Evet | Evet | ||
| TIFF | tiff | - | Evet |
PDF okuma ve yazma, Python’ın temel işlevi için Aspose.PDF FOSS — Document/SimplePdf motor çifti bu gönderideki her kod yolunda PDF belgelerini yükler ve yazar. Document.render_page, Page.render ve RasterizedPage.to_png()/to_tiff() ayrıca PNG ve TIFF raster çıktısı üretir; bunlar belge yükleme formatları yerine sayfa rasterleştirme çıktılarıdır.
Açık Kaynak & Lisanslama
Aspose.PDF FOSS for Python, MIT lisansı altında yayınlanmıştır: kullanım kısıtlaması yok, çalışma zamanı ücreti yok ve ticari ya da kişisel kullanım için kayıt gereksinimi yoktur. Kaynak kodu github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python adresinde barındırılmaktadır ve paket PyPI üzerinde aspose-pdf-foss-for-python olarak yayınlanmıştır.