Giriş

Aspose.PDF FOSS for Python, Python kodundan PDF belgeleriyle çalışmak için yeni bir açık kaynak kütüphanedir. MIT lisansı altında yayınlanmıştır ve tamamen Python içinde uygulanmıştır — PDF ayrıştırıcısı, yazarı, sayfa rasterleştiricisi ve şifreleme rutinleri paketin kendisinin bir parçasıdır; gerekli bağımlılıklar sadece cryptography ve asn1crypto ile sınırlıdır. İsteğe bağlı ekler Pillow tabanlı görüntü desteği, Brotli tabanlı WOFF2 yazı tipi çözümlemesi ve HarfBuzz tabanlı karmaşık metin şekillendirme ekler.

Kütüphane, PDF’yi bir yol, bayt dizisi veya ikili akıştan yükleyen ve sayfalarını document.pages aracılığıyla sunan Document sınıfı etrafında düzenlenmiştir; document.pages, yineleme, indeksleme ve dilimleme destekleyen bir PageCollection‘dir. Buradan itibaren, API, sayfalara metin ve görüntü eklemeyi, ek açıklamaları okumayı ve değiştirmeyi, AcroForm alanları oluşturup doldurmayı, belgeleri şifrelemeyi ve şifre çözmeyi ve metin ile ekleri çıkarmayı kapsar — yeni PDF’ler oluşturmak ya da mevcut olanlarla çalışmak için gereken işlemler.

Bu sürüm, ticari bir lisans olmadan bir Python kod tabanında PDF işleme ihtiyacı duyan geliştiriciler içindir: rapor ve fatura oluşturma, belge alım hatları, form doldurma otomasyonu ve PDF sayfalarını görüntülere render etmesi ya da metni aşağı akış indekslemesi için çıkarması gereken hizmetler. Proje şu anda alfa aşamasındadır, bu yüzden API’ler ve özellik kapsamı ilk kararlı sürümden önce değişebilir. Python 3.11 veya daha yenisi gereklidir.

Neler Dahildir

Belge Oluşturma ve Yükleme

PdfDocument() boş bir PDF oluşturur; PdfDocument(source, password=..., limits=...) bir yolu, ham baytları veya ikili akışı kullanarak mevcut bir PDF’yi yükler ve PdfDocument().load_from(source, ...) çağırmaya eşdeğerdir. İkisi de eksik dosya, PDF olmayan veri veya eksik şifre durumunda bir istisna fırlatır, boş bir belge döndürmek yerine. PdfDocument bir bağlam yöneticisidir, bu yüzden with bloğu sona erdiğinde kaynaklar otomatik olarak serbest bırakılır.

from aspose_pdf import Document

with Document() as document:
    page = document.pages.add()
    page.add_text("Generated by Aspose.PDF FOSS", x=72, y=720, font_size=14)
    document.save("report.pdf")

with Document("report.pdf") as document:
    print(f"Pages: {document.page_count}")
    print(f"PDF version: {document.version}")

Metin ve Görseller Eklemek

Page.add_text, verilen bir font_size ile bir x/y konumunda Standard‑14 ya da gömülü Unicode metni yerleştirir; font argümanı bir FontDescriptor, ham font baytları veya Standard‑14 kodlamaları dışındaki Unicode için bir TrueType/OpenType font yolu olabilir. Page.add_image, belirtilen konum ve boyutta sayfaya ham, JPEG veya PNG görüntü XObject’i yerleştirir.

from aspose_pdf import Document

with Document() as document:
    page = document.pages.add()
    page.add_text(
        "Quarterly Summary",
        x=72,
        y=740,
        font_size=16,
    )
    page.add_image(
        "chart.png",
        x=72,
        y=420,
        width=300,
        height=200,
    )
    document.save("summary.pdf")

Açıklamalar

Her Page, page.annotations aracılığıyla, bir AnnotationCollection üzerinden açıklamalarını ortaya koyar. add(subtype, rect, contents, title, appearance_normal, properties), Square, Circle, Line, Highlight veya FreeText gibi standart bir alt türe sahip bir açıklama oluşturur ve ekler, bir Annotation döndürür. Döndürülen açıklamada generate_appearance() çağırmak, geometrisi ve özelliklerinden bir görünüm akışı sentezler.

from aspose_pdf import Document

with Document() as document:
    page = document.pages.add()
    annotation = page.annotations.add(
        "Square",
        (100, 600, 300, 680),
        "Needs review",
        properties={"C": [1, 0, 0]},
    )
    annotation.generate_appearance()
    document.save("annotated.pdf")

Form Alanları

document.form, belgenin Form değerini döndürür; bu, AcroForm alanlarını doğrudan oluşturur: add_text_field(), add_checkbox(), add_radio_group(), add_list_box(), add_combo_box() ve add_push_button() her biri bir alan adı, bir Page veya sayfa indeksi ve bir yerleştirme dikdörtgeni alır, bir Field döndürür. field.value ayarlamak, alanın değerini günceller ve form.flatten() tüm alanların görünümünü statik sayfa içeriğine yerleştirir.

from aspose_pdf import Document

with Document() as document:
    page = document.pages.add()
    form = document.form
    field = form.add_text_field(
        "customer_name",
        page,
        (72, 700, 300, 720),
    )
    field.value = "Jane Doe"
    form.flatten()
    document.save("form.pdf")

Şifreleme

Document.encrypt(user_password, owner_password, permissions), bir kullanıcı parolası, bir sahibi parolası ve bir izin bitmaskesi ile bir belgeyi korur, zincirleme için aynı Document nesnesini döndürür. Document.decrypt(password), işlemi tersine çevirir ve is_encrypted özelliği mevcut durumu raporlar. Şifrelenmiş bir belgeyi tekrar yüklemek, password=‘yi yapıcıya veya load_from()‘e geçirmek gerektirir.

from aspose_pdf import Document

with Document("report.pdf") as document:
    document.encrypt(user_password="user-pass", owner_password="owner-pass", permissions=0)
    document.save("encrypted.pdf")

with Document("encrypted.pdf", password="user-pass") as document:
    print(f"Encrypted: {document.is_encrypted}")

Metin Çıkarma

PdfExtractor, bind_pdf() ile bir kaynağa bağlanır, ardından extract_text() belgenin sayfalarını dolaşır. get_text() tüm çıkarılan metni bir kerede döndürür, has_next_page_text() ve get_next_page_text() ise sonucu sayfa sayfa yineleme yapar. PdfExtractor ayrıca bir bağlam yöneticisidir.

from aspose_pdf import PdfExtractor

with PdfExtractor() as extractor:
    extractor.bind_pdf("report.pdf")
    extractor.extract_text()
    while extractor.has_next_page_text():
        print(extractor.get_next_page_text())

Hızlı Başlangıç

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

with Document() as document:
    page = document.pages.add()
    page.add_text(
        "Hello from Aspose.PDF FOSS!",
        x=72,
        y=720,
        font_size=18,
    )
    document.save("hello.pdf")

with Document("hello.pdf") as document:
    print(f"Pages: {document.page_count}")
    print(f"PDF version: {document.version}")

Desteklenen Biçimler

BiçimUzantıOkuYaz
PDF.pdf✓✓
PNG.png—✓
TIFF.tiff—✓

PDF, kütüphanenin temel giriş ve çıkış formatıdır, Document/load_from() aracılığıyla okunur ve Document.save aracılığıyla yazılır. PNG ve TIFF, Page.render, Page.save_as_image ve Document.save_page_as_image tarafından üretilen sayfa render çıktılarıdır.


Açık Kaynak & Lisanslama

Aspose.PDF FOSS for Python MIT lisansı altında dağıtılmaktadır, tam kaynak github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python adresinde mevcuttur. Lisans, ayrı bir anlaşma gerektirmeden ticari kullanım, değiştirme ve yeniden dağıtımı izin verir.


Başlarken

İlgili Kaynaklar