Cara Memuat Dokumen di Python
Aspose.PDF FOSS untuk Python memuat PDF dari jalur file, byte mentah, atau aliran biner ke dalam objek Document yang dapat Anda periksa dan manipulasi. Perpustakaan ini murni Python dan dipasang dengan satu perintah.
Panduan Langkah demi Langkah
Langkah 2: Impor Kelas yang Diperlukan
Impor Document untuk memuat dan menyimpan PDF, serta kelas pengecualian yang akan Anda tangani ketika pemuatan gagal:
from aspose_pdf import (
Document,
InvalidPasswordException,
InvalidPdfFileFormatException,
PdfCorruptedError,
PdfParseException,
)Langkah 3: Memuat PDF dari Jalur File
Berikan jalur file secara langsung ke konstruktor Document, atau panggil load_from secara eksplisit pada instance yang ada — keduanya menerima jalur, bytes, atau aliran biner. Gunakan Document sebagai manajer konteks sehingga penangan file yang mendasarinya dilepaskan secara otomatis:
from aspose_pdf import Document
with Document("report.pdf") as document:
print(f"Loaded {document.page_count} page(s)")B bentuk konstruktor Document(source) setara dengan Document().load_from(source):
document = Document()
document.load_from("report.pdf")
print(f"Loaded {document.page_count} page(s)")
document.close()Langkah 4: Muat PDF yang Dilindungi Kata Sandi
Baik Document(source, password=...) maupun Document.load_from(source, password, limits) menerima argumen password untuk PDF yang dienkripsi dengan kata sandi pengguna:
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}")Jika sumber tidak dilindungi kata sandi, hapus argumen — mengirim password=None (default) juga berfungsi untuk PDF biasa.
Langkah 5: Tangani Pengecualian Muat
File yang hilang, data bukan PDF, kata sandi yang hilang atau salah, atau PDF yang rusak tidak pernah mengembalikan Document yang kosong secara diam-diam — melainkan melempar pengecualian. Tangkap kelas pengecualian spesifik untuk merespons dengan tepat:
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 dan saudaranya PdfMalformedError keduanya memiliki properti message, offset, dan recoverable, yang berguna untuk mencatat secara tepat di mana file yang rusak gagal diparse. Saat memproses masukan yang tidak terpercaya, juga tangkap PdfResourceLimitException, yang dilempar ketika dokumen melebihi kebijakan keselamatan PdfLoadLimits default (ukuran input, jumlah objek, ukuran aliran terdekripsi, dan batas serupa).
Langkah 7: Lepaskan Sumber Daya Dokumen
Menggunakan Document sebagai manajer konteks (with Document(...) as document:) menutup dokumen secara otomatis ketika blok berakhir. Ketika Anda membuat Document di luar blok with, panggil close() atau dispose() secara eksplisit setelah selesai menggunakannya:
document = Document()
document.load_from("report.pdf")
try:
print(document.page_count)
finally:
document.close()Masalah Umum dan Solusinya
InvalidPasswordException ditimbulkan meskipun saya tidak mengira file tersebut dienkripsi
PDF sumber memiliki kata sandi pengguna yang diatur. Pastikan hal ini dengan asal file, kemudian berikan nilai yang benar sebagai argumen password ke Document(...) atau load_from(...).
InvalidPdfFileFormatException pada file yang terlihat baik
File tersebut bukan PDF yang valid — mungkin itu halaman kesalahan HTML, unduhan yang terpotong, atau format lain yang disimpan dengan ekstensi .pdf. Buka file tersebut di editor teks dan pastikan dimulai dengan %PDF-.
PdfCorruptedError pada file yang terbuka di penampil lain
Beberapa pembaca PDF memperbaiki struktur yang rusak secara diam-diam. Document mengeluarkan PdfCorruptedError untuk korupsi yang tidak dapat dipulihkan dan PdfMalformedError untuk masalah struktural yang dapat dipulihkan — periksa properti offset pada pengecualian untuk menemukan area masalah dalam aliran byte.
PdfResourceLimitException pada PDF yang besar atau kompleks
Dokumen melebihi batas PdfLoadLimits default (ukuran input, jumlah objek, ukuran aliran terdekripsi, dan batas serupa yang dirancang untuk melindungi dari input yang tidak terpercaya). Buat PdfLoadLimits khusus dan berikan sebagai limits= ke Document(...) atau load_from(...) jika file terpercaya dan batas yang lebih besar sesuai.
Lupa menutup sebuah Document dibuka di luar sebuah with block
Panggil document.close() (atau document.dispose()) setelah selesai, atau muat file dengan with Document(source) as document: sehingga pembersihan terjadi secara otomatis bahkan jika pengecualian terjadi di dalam blok.
Pertanyaan yang Sering Diajukan
Apa yang dapat saya berikan sebagai argumen source saat memuat PDF?
Document(source) dan Document.load_from(source, password, limits) menerima jalur file, bytes mentah, atau aliran biner apa pun.
Bagaimana cara memuat PDF yang sudah berada di memori alih-alih di disk?
Berikan objek bytes secara langsung: Document(pdf_bytes), atau panggil document.load_from(pdf_bytes) pada instance Document yang ada.
Apakah memuat PDF memerlukan kata sandi yang benar di awal, atau saya dapat memeriksanya terlebih dahulu?
is_encrypted hanya tersedia setelah pemuatan berhasil, sehingga PDF yang terenkripsi harus dibuka dengan argumen password yang benar dalam panggilan yang sama. Tangkap InvalidPasswordException jika Anda perlu meminta kata sandi secara interaktif.