Python içinde Bir Belge Nasıl Yüklenir

Python içinde Bir Belge Nasıl Yüklenir

Aspose.PDF FOSS for Python, bir PDF’i dosya yolundan, ham baytlardan veya ikili akıştan bir Document nesnesine yükler; bu nesneyi inceleyebilir ve manipüle edebilirsiniz. Kütüphane saf Python dir ve tek bir komutla kurulur.

Adım Adım Kılavuz

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

PDF yüklemek ve tutmak için Document içe aktarın, ayrıca yükleme başarısız olduğunda ele alacağınız istisna sınıfları:

from aspose_pdf import (
    Document,
    InvalidPasswordException,
    InvalidPdfFileFormatException,
    PdfCorruptedError,
    PdfParseException,
)

Adım 3: Dosya Yolundan PDF Yükleyin

Dosya yolunu doğrudan Document yapıcıya geçirin veya mevcut bir örnek üzerinde load_from öğesini açıkça çağırın — her ikisi de bir yol, bytes, veya bir ikili akışı kabul eder. Document öğesini bir bağlam yöneticisi olarak kullanın, böylece alttaki dosya tanıtıcıları otomatik olarak serbest bırakılır:

from aspose_pdf import Document

with Document("report.pdf") as document:
    print(f"Loaded {document.page_count} page(s)")

Yapıcı formu Document(source), Document().load_from(source) ile eşdeğerdir:

document = Document()
document.load_from("report.pdf")
print(f"Loaded {document.page_count} page(s)")
document.close()

Adım 4: Şifre Koruması Olan PDF’yi Yükle

Hem Document(source, password=...) hem de Document.load_from(source, password, limits), kullanıcı şifresiyle şifrelenmiş PDF’ler için bir password argümanını kabul eder:

from aspose_pdf import Document

with Document("locked.pdf", password="secret") as document:
    print(f"Opened encrypted document: {document.page_count} page(s)")
    print(f"Encrypted: {document.is_encrypted}")

Kaynak şifre korumalı değilse, argümanı atlayın — password=None (öntanımlı) değerini geçirmek, sıradan PDF’ler için de çalışır.


Adım 5: Yükleme İstisnalarını İşleme

Eksik bir dosya, PDF olmayan veri, eksik ya da hatalı bir şifre veya bozuk bir PDF, sessizce boş bir Document döndürmez — bunun yerine bir istisna fırlatır. Uygun şekilde yanıt vermek için belirli istisna sınıflarını yakalayın:

from aspose_pdf import (
    Document,
    InvalidPasswordException,
    InvalidPdfFileFormatException,
    PdfCorruptedError,
    PdfParseException,
)

try:
    document = Document("report.pdf", password="maybe-wrong")
except InvalidPasswordException:
    print("The PDF is encrypted; supply the correct password.")
except InvalidPdfFileFormatException:
    print("The file is not a valid PDF.")
except PdfCorruptedError as error:
    print(f"Unrecoverable corruption at offset {error.offset}: {error.message}")
except PdfParseException as error:
    print(f"Could not parse the PDF: {error}")
else:
    print(f"Loaded {document.page_count} page(s)")
    document.close()

PdfCorruptedError ve kardeşi PdfMalformedError, her ikisi de message, offset ve recoverable özelliklerini taşır; bu, bozuk bir dosyanın nerede ayrıştırılamadığını tam olarak kaydetmek için yararlıdır. Güvenilmeyen girdileri işlerken ayrıca PdfResourceLimitException istisnasını yakalayın; bu, bir belgenin varsayılan PdfLoadLimits güvenlik politikasını (girdi boyutu, nesne sayısı, çözülen akış boyutu ve benzeri sınırlar) aşacağı zaman fırlatılır.


Adım 7: Belge Kaynaklarını Serbest Bırak

Bir Document öğesini bağlam yöneticisi (with Document(...) as document:) olarak kullanmak, blok çıktığında belgeyi otomatik olarak kapatır. Bir Document öğesini bir with bloğu dışında oluşturduğunuzda, işiniz bittiğinde close() veya dispose() öğesini açıkça çağırın:

document = Document()
document.load_from("report.pdf")
try:
    print(document.page_count)
finally:
    document.close()

Yaygın Sorunlar ve Çözümler

InvalidPasswordException dosyanın şifreli olduğunu düşünmediğim halde tetikleniyor

Kaynak PDF bir kullanıcı şifresi içeriyor. Bunu dosyanın kaynağıyla doğrulayın, ardından doğru değeri password argümanı olarak Document(...) ya da load_from(...) fonksiyonuna geçirin.

InvalidPdfFileFormatException iyi görününen bir dosyada

Dosya geçerli bir PDF değil — bir HTML hata sayfası, kesilmiş bir indirme ya da .pdf uzantılı farklı bir format olabilir. Dosyayı bir metin düzenleyicide açın ve %PDF- ile başladığını doğrulayın.

PdfCorruptedError diğer görüntüleyicilerde açılan bir dosyada

Bazı PDF okuyucular bozuk yapıyı sessizce onarır. Document, kurtarılamaz bozulma için PdfCorruptedError ve kurtarılabilir yapısal sorunlar için PdfMalformedError fırlatır — sorunun bulunduğu bayt akışındaki alanı belirlemek için istisnadaki offset özelliğini inceleyin.

PdfResourceLimitException büyük veya karmaşık bir PDF’de

Belge, varsayılan PdfLoadLimits sınırını aştı (girdi boyutu, nesne sayısı, çözülen akış boyutu ve güvensiz girdiyi korumak için tasarlanmış benzer sınırlamalar). Özel bir PdfLoadLimits oluşturun ve bunu limits= olarak Document(...) ya da dosya güvenilir ve daha büyük sınırlar uygun ise load_from(...) geçirin.

Kapatmayı unutmak Document dışarıda bir with block

İşiniz bittiğinde document.close() (veya document.dispose()) çağırın, ya da dosyayı with Document(source) as document: ile yükleyin; böylece blok içinde bir istisna oluşsa bile temizlik otomatik olarak gerçekleşir.

Sıkça Sorulan Sorular

Bir PDF yüklerken source argümanı olarak ne geçirebilirim?

Document(source) ve Document.load_from(source, password, limits), bir dosya yolu, ham bytes veya herhangi bir ikili akışı kabul eder.

Bellekte zaten bulunan bir PDF’yi disk yerine nasıl yüklerim?

bytes nesnesini doğrudan aktar: Document(pdf_bytes), veya mevcut bir Document örneği üzerinde document.load_from(pdf_bytes) çağır.

Bir PDF’yi yüklemek önceden doğru şifreyi gerektirir mi, yoksa önce kontrol edebilir miyim?

is_encrypted, yalnızca başarılı bir yüklemeden sonra kullanılabilir, bu yüzden şifreli bir PDF aynı çağrıda doğru password argümanıyla açılmalıdır. Şifreyi etkileşimli olarak istemeniz gerekiyorsa InvalidPasswordException yakalayın.

Ayrıca Bakınız

 Türkçe