Aspose.PDF FOSS for Python ویژگی‌ها

Aspose.PDF FOSS for Python ویژگی‌ها

Aspose.PDF FOSS برای Python ویژگی‌ها

Aspose.PDF FOSS برای Python یک کتابخانه pure-Python برای ایجاد، باز کردن، تغییر و ذخیره اسناد PDF است. این صفحه نواحی اصلی قابلیت‌ها و کلاس‌هایی که به‌عنوان نقاط ورودی آن‌ها عمل می‌کنند را بررسی می‌کند. هر ناحیه به‌صورت عمیق در صفحه راهنمای توسعه‌دهنده خود پوشش داده شده است.


مدیریت سند و صفحه

Document شیء ریشه برای هر عملیات است. بدون آرگومان آن را بسازید تا سند جدید و خالی شروع شود، یا load_from() را فراخوانی کنید تا یک سند موجود را از مسیر، بایت‌ها یا جریان بخوانید. document.pages PageCollection قابل تغییر را در دسترس می‌گذارد، و Page.add_text متن موقعیت‌یافته را روی صفحه قرار می‌دهد.

from aspose_pdf import Document

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

استخراج متن و جستجو

PdfExtractor به یک سند متصل می‌شود و متن را صفحه به صفحه استخراج می‌کند. bind_pdf() منبع را باز می‌کند، extract_text() استخراج را انجام می‌دهد، و get_text() نتیجهٔ جمع‌آوری‌شده را برمی‌گرداند.

from aspose_pdf import PdfExtractor

extractor = PdfExtractor()
extractor.bind_pdf("hello.pdf")
extractor.extract_text()
print(extractor.get_text())
extractor.close()

برای جستجو و جایگزینی موقعیت‌یافته، به‌ازای هر قطعه، TextFragmentAbsorber اشیای TextFragment مطابقت‌یافته را با text_search_options که حساسیت به حروف بزرگ/کوچک و تطبیق با عبارات منظم را کنترل می‌کند، در دسترس می‌گذارد.


رندر صفحه به تصاویر

Document.save_page_as_image یک صفحهٔ تک را مستقیماً به فایل PNG یا TIFF با DPI قابل تنظیم رندر می‌کند. برای دسترسی سطح پایین، Page.render یک RasterizedPage حاوی داده‌های پیکسلی خام از طریق get_pixel() و pixels بر می‌گرداند.

from aspose_pdf import Document

document = Document()
document.load_from("hello.pdf")
document.save_page_as_image(0, "page-1.png", dpi=150)

فرم‌ها و فیلدهای تعاملی

فیلدهای AcroForm از طریق Document.form، یک واسط Form مدیریت می‌شوند. Form.add_text_field() (و معادل‌های چک‌باکس، رادیو، لیست و کامبو‌باکس) یک فیلد جدید مرتبط با یک صفحه و مستطیل ویجت ایجاد می‌کند و یک Field برمی‌گرداند. Form.fields تمام فیلدهای موجود در سند را فهرست می‌کند.

from aspose_pdf import Document

document = Document()
page = document.pages.add()
document.form.add_text_field("customer_name", page, (72, 700, 300, 720))

for field in document.form.fields:
    print(field.name, field.field_type)

document.save("form.pdf")

امنیت، رمزنگاری و امضاها

Document.encrypt یک سند را با رمز عبور کاربر (ضروری برای باز کردن) و رمز عبور مالک (ضروری برای تغییر مجوزها) محافظت می‌کند؛ decrypt() و change_passwords() حفاظت را بر روی سندی که قبلاً باز شده است مدیریت می‌کنند. is_encrypted وضعیت فعلی را گزارش می‌دهد.

from aspose_pdf import Document

document = Document()
document.load_from("hello.pdf")
document.encrypt(user_password="secret", owner_password="owner-secret")
document.save("encrypted.pdf")

تأیید امضای دیجیتال توسط PdfSignature.validate انجام می‌شود که یک ValidationResult توصیف‌کنندهٔ وضعیت اعتماد و لغو را برمی‌گرداند، و SigningUtils ابزارهای کمکی گواهی و امضای PKCS#7/CAdES را فراهم می‌کند.


PDF/A و PDF/UA انطباق

Document.validate_pdfa یک بررسی انطباق PDF/A مبتنی بر هیوستیک اجرا می‌کند و یک PdfAValidationResult بازمی‌گرداند؛ convert_to_pdfa() سعی می‌کند سند را به آن سطح بهبود دهد. validate_pdfua() و auto_tag() بررسی دسترسی‌پذیری معادل و برچسب‌گذاری خودکار درخت ساختار را برای PDF/UA فراهم می‌کنند.

from aspose_pdf import Document

document = Document()
document.load_from("hello.pdf")

result = document.validate_pdfa("1b")
if not result.is_valid:
    document.convert_to_pdfa("1b")

document.auto_tag()
document.save("compliant.pdf")

نکات و بهترین روش‌ها

  • شیء برگردانده‌شده توسط document.pages، page.annotations یا document.form را مستقیماً تغییر دهید — ویرایش‌های انجام‌شده روی یک نسخه جداگانه از صفحه یا فیلد هنگام فراخوانی save() منعکس نمی‌شوند.
  • PageCollection در این بایندینگ Python از ایندکس صفر شروع می‌شود (document.pages[0] اولین صفحه است).
  • قبل از AsposePdfException گسترده‌تر، InvalidPasswordException و PdfParseException را هنگام فراخوانی load_from() بر ورودی‌های غیرقابل اعتماد بگیرید، تا بتوانید نسبت به رمز عبور نادرست متفاوت از یک فایل خراب واکنش نشان دهید.
  • قبل از save()، document.optimize() یا compress_streams() را بر اسناد به‌طور گسترده ویرایش‌شده فراخوانی کنید تا منابع استفاده‌نشده حذف شوند و اندازه فایل کاهش یابد.
  • هنگام پردازش PDFها از منبعی نامطمئن، یک PdfLoadLimits محدود را به load_from() منتقل کنید تا تعداد حافظه و اشیاء در طول تجزیه محدود شود.

مشکلات رایج

مشکلدلیلرفع
save() فایلی با ویرایش‌های بدون تغییر تولید می‌کندویرایش‌ها به جای شیء به‌دست آمده از document.pages، annotations یا form، بر روی نسخه‌ای از صفحه، حاشیه‌نویس یا فیلد انجام شدندشیء بازگردانده شده توسط آن مجموعه‌ها را مستقیماً اصلاح کنید
InvalidPasswordException بر روی load_from()سند با رمز عبور محافظت می‌شود و هیچ رمز عبوری ارائه نشد یا رمز نادرست وارد شدرمز عبور صحیح را وارد کنید: document.load_from(path, password="...")
validate_pdfa() هنوز پس از convert_to_pdfa() خطای قلم را گزارش می‌دهدهیچ فایل قلم متطابقی در font_lookup_directory ارائه‌شده یافت نشدقلم گمشده را به پوشه جستجو اضافه کنید یا قبل از تبدیل آن را با FontRepository ثبت کنید
تصویر رندر شده خالی به نظر می‌رسدشاخص صفحه اشتباه به save_page_as_image() یا render() ارسال شده استpages از صفر شروع می‌شود — شاخص را تأیید کنید و بررسی کنید که آیا PdfExtractor برای آن صفحه متنی بازمی‌گرداند یا نه
فیلد اضافه‌شده با Form.add_text_field() در صفحه ظاهر نمی‌شودمستطیل ویجت خارج از media_box صفحه قرار داردتأیید کنید که مختصات مستطیل درون Page.media_box باشد

FAQ

آیا Aspose.PDF متن‌باز برای Python به یک موتور تجاری PDF وابسته است؟

خیر. این یک موتور PDF از پایه، خالص-Python است که تحت مجوز MIT منتشر شده است. تنها وابستگی‌های زمان اجرا آن cryptography و asn1crypto هستند که برای رمزنگاری و تأیید امضا استفاده می‌شوند.

آیا می‌توانم به‌جای باز کردن یک PDF موجود، یک PDF را از ابتدا بسازم؟

بله. Document() بدون هیچ آرگومانی یک سند خالی در حافظه ایجاد می‌کند؛ برای افزودن صفحات قبل از ذخیره‌سازی، document.pages.add() را فراخوانی کنید.

به کدام فرمت‌های رستر می‌توانم یک صفحه را رندر کنم؟

Page.render و Document.save_page_as_image خروجی رستر PNG یا TIFF تولید می‌کنند؛ RasterizedPage بازگردانده شده همچنین داده‌های پیکسلی خام را از طریق get_pixel() و ویژگی pixels در دسترس می‌گذارد.

برای خطاهای خاص بسته، باید چه استثنایی را بگیرم؟

Catch AsposePdfException. هر خطای مخصوص بسته — شامل تجزیه (PdfParseException)، رمز عبور و رمزگذاری (PdfSecurityException، InvalidPasswordException)، و اعتبارسنجی (PdfValidationException) — از آن مشتق می‌شود.

بعداً کجا باید بروم؟

Getting Started شامل نصب، لایسنس‌بندی، و یک مثال کاری اولیه است. این راهنمای توسعه‌دهنده به موضوعات مدیریت اسناد مانند فرم‌ها، پیوست‌های فایل جاسازی‌شده، کشف قلم، و نوشتن فهرست/بوکمارک ادامه می‌دهد.


API Reference خلاصه

کلاس/متدتوضیح
Documentشیء ریشه — ایجاد، بارگذاری، ذخیره و مدیریت یک PDF
Document.pagesقابل تغییر سند PageCollection
Document.load_from / Document.saveخواندن از یا نوشتن به مسیر، بایت‌ها یا جریان
Document.encrypt / Document.decryptرمزگذاری با گذرواژه یا حذف حفاظت
Document.validate_pdfa / Document.convert_to_pdfaبررسی تطبیق هستریک PDF/A و تبدیل
Document.validate_pdfua() / Document.auto_tagبررسی دسترسی‌پذیری PDF/UA و برچسب‌گذاری خودکار ساختار
Page.add_textمتن موقعیت‌یافته را به یک صفحه اضافه کنید
Page.renderصفحه‌ای را به RasterizedPage رندر کنید
PdfExtractorاستخراج متن صفحه و پیوست‌های تعبیه‌شده
PdfFileEditorحذف، تقسیم، درج و حذف صفحات در میان فایل‌ها
Form / FieldAcroForm محفظه و فیلدهای فرم جداگانه
PdfSignature / SigningUtilsاعتبارسنجی و ایجاد امضای دیجیتال
AsposePdfExceptionکلاس پایه برای هر استثنای خاص بسته

همچنین ببینید:

 فارسی