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 / Field | AcroForm محفظه و فیلدهای فرم جداگانه |
PdfSignature / SigningUtils | اعتبارسنجی و ایجاد امضای دیجیتال |
AsposePdfException | کلاس پایه برای هر استثنای خاص بسته |