کار با سازگاری تولید شده API

کار با سازگاری تولید شده API

کار با سازگاری تولید شده API

Aspose.PDF FOSS برای Python یک سطح دوم، کوچکتر API را زیر بسته فرعی aspose_pdf.generated ارائه می‌دهد: generated.document.Document، generated.forms.UnsignedContent و UnsignedContentAbsorber، و generated.pdfa.PdfAValidateOptions و PdfAValidationResult. هر یک از این کلاس‌ها نام خود را با کلاسی در API اصلی کتابخانه به اشتراک می‌گذارند (aspose_pdf.Document، aspose_pdf.UnsignedContent، و غیره)، اما آنها کلاس‌های جداگانه و به‌صورت مستقل تعریف‌شده با سطح متدهای کاهش‌یافته هستند. آنها به عنوان لایه سازگاری مستقل وجود دارند — همیشه آنها را با مسیر کامل aspose_pdf.generated.* وارد کنید تا بدانید کدام یک را صدا می‌زنید.


دوره حیات سند از طریق سند تولید شده

generated.document.Document چرخه حیات اصلی سند را پشتیبانی می‌کند: بارگذاری، ذخیره‌سازی، بهینه‌سازی پایه، رمزنگاری و اعتبارسنجی. بیشتر ویژگی‌های آن به‌صورت Any تایپ شده‌اند نه انواع غنی‌تری که در کلاس اصلی Document نمایان شده‌اند.

from aspose_pdf.generated.document import Document

doc = Document()
doc.load_from("input.pdf")

doc.optimize(compress_images=True)
doc.optimize_resources(remove_unused=True)

if doc.validate():
    doc.save("output.pdf")

doc.dispose()

رمزنگاری و تغییر گذرواژه‌ها از فرم تک‌گذرواژه استفاده می‌کنند به‌جای گذرواژه‌های جداگانه کاربر/مالک در Document.encrypt اصلی:

from aspose_pdf.generated.document import Document

doc = Document()
doc.load_from("input.pdf")

doc.encrypt("secret")
doc.change_passwords("secret", "new-secret")
doc.save("protected.pdf")

استخراج محتوای بدون امضا

generated.forms.UnsignedContentAbsorber صفحات، فیلدهای فرم و حاشیه‌نویسی‌های سندی که هنوز امضا نشده‌اند را به داخل یک محفظه UnsignedContent استخراج می‌کند. برای اجرای استخراج، extract() را فراخوانی کنید، سپس برای بررسی نتیجه بدون اجرای مجدد، get_extracted() یا has_extracted() را استفاده کنید.

from aspose_pdf.generated.document import Document
from aspose_pdf.generated.forms import UnsignedContentAbsorber

doc = Document()
doc.load_from("input.pdf")

absorber = UnsignedContentAbsorber()
extracted = absorber.extract()

print(len(extracted.pages), len(extracted.form_fields), extracted.annotations)

if absorber.has_extracted():
    same_result = absorber.get_extracted()

absorber.reset()

UnsignedContent می‌تواند به‌صورت مستقیم ساخته و پر شود، مستقل از یک جذب‌کننده:

from aspose_pdf.generated.forms import UnsignedContent

bundle = UnsignedContent()
bundle.add_page(some_page)
bundle.add_form_field(some_field)
bundle.add_annotation(some_annotation)

bundle.remove_page(some_page)
bundle.reset()

PDF/A گزینه‌ها و نتایج اعتبارسنجی

generated.pdfa.PdfAValidateOptions و PdfAValidationResult یک جفت گزینه/نتیجه مستقل برای جریان‌های کاری اعتبارسنجی به سبک PDF/A هستند. آن‌ها کلاس‌هایی که توسط API اصلی در Document.validate_pdfa() بازگردانده می‌شوند یا توسط PdfAValidator.process() مصرف می‌شوند نیستند — آن‌ها از کلاس‌های PdfAValidateOptions و PdfAValidationResult خود که به‌صورت جداگانه تعریف شده‌اند و سطح غنی‌تری دارند (شامل level، warnings، is_heuristic، و یک font_lookup_directory) استفاده می‌کنند.

from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult

options = PdfAValidateOptions()
options.add_input()
options.set_option("level", "1b")

stored_options = options.get_options()

result = PdfAValidationResult()
result.add_error("Font not embedded: Arial")

summary = result.to_dict()
is_valid = result.is_valid

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

  • هر کلاس generated را از طریق مسیر کامل زیرماژول آن وارد کنید (from aspose_pdf.generated.document import Document، و به‌طور مشابه برای generated.forms و generated.pdfa) — هرگز فرض نکنید که یک ایمپورت ساده Document یا UnsignedContent به نسخه سازگاری تبدیل می‌شود.
  • به کلاس وارد شده یک نام محلی متمایز بدهید هر زمانی که فایلی نیز از API اصلی در همان ماژول استفاده می‌کند، تا دو سطح به‌صورت واضح در هر نقطه فراخوانی جدا بمانند.
  • generated.pdfa.PdfAValidateOptions/PdfAValidationResult را به‌عنوان یک جفت خودکفا در نظر بگیرید: گزینه‌ها را بسازید، منطق اعتبارسنجی خود را اجرا کنید، و نتایج را خودتان با add_error() ثبت کنید — آن‌ها به‌صورت خودکار توسط Document.validate_pdfa() پر نمی‌شوند.
  • قبل از فراخوانی get_extracted()، UnsignedContentAbsorber.has_extracted() را بررسی کنید اگر مطمئن نیستید extract() قبلاً اجرا شده است.
  • به‌جای کد جدید، ترجیحاً از aspose_pdf.Document API اصلی استفاده کنید مگر اینکه به‌طور خاص به سطح کاهش‌یافتهٔ سازگاری تولیدی نیاز داشته باشید.

مسائل رایج

مشکلدلیلراه‌حل
متدهای Document نادرست در دسترس هستند (بدون pages، form، xmp_metadata و موارد مشابه)به‌جای aspose_pdf.Document اصلی، generated.document.Document وارد شدکلاس اصلی (import aspose_pdf; aspose_pdf.Document()) را وارد کنید مگر اینکه سطح کاهش‌یافته منظور شما باشد
PdfAValidateOptions/PdfAValidationResult از generated.pdfa با PdfAValidator.process() کار نمی‌کنندمتد PdfAValidator اصلی API انتظار دارد کلاس‌های PdfAValidateOptions/PdfAValidationResult خود را داشته باشد، نه نسخه‌های generated.pdfaاز کلاس‌های PdfAValidateOptions/PdfAValidationResult که از aspose_pdf صادر شده‌اند برای گردش‌کارهای PdfAValidator استفاده کنید
get_extracted() مقدار None را برمی‌گرداندextract() هرگز بر روی آن نمونهٔ UnsignedContentAbsorber فراخوانی نشدقبل از get_extracted()، extract() را فراخوانی کنید، یا ابتدا has_extracted() را بررسی کنید
ویژگی‌های generated.document.Document به صورت Any تایپ شده‌اند و هیچ تکمیل خودکار ارائه نمی‌دهندسطح تولید شده، تایپ ایستا را به نفع API کوچکتر و ساده‌تر می‌اندازددر محل فراخوانی، نوع مورد انتظار را تبدیل (Cast) کنید یا مستند کنید، یا برای تایپ‌گذاری غنی‌تر، به کلاس اصلی Document سوئیچ کنید

FAQ

آیا aspose_pdf.generated یک استاب یا جای‌گیر است؟

نه. این یک زیرپکیج واقعی و قابل وارد شدن است که کلاس‌های کارآمدی دارد — Document، UnsignedContent، UnsignedContentAbsorber، PdfAValidateOptions و PdfAValidationResult — به‌سادگی یک سطح کوچکتر و مستقل نسبت به API اصلی کتابخانه است.

چرا generated.document.Document همان نام aspose_pdf.Document را دارد؟

این‌ها دو کلاس مستقل هستند که به‌طور اتفاقی نام یکسانی دارند. وارد کردن از aspose_pdf.generated.document نسخهٔ سازگاری را به شما می‌دهد؛ وارد کردن aspose_pdf.Document (یا from aspose_pdf import Document) نسخهٔ اصلی را به شما می‌دهد.

آیا می‌توانم یک generated.pdfa.PdfAValidateOptions را به PdfAValidator.process() پاس دهم؟

نه. PdfAValidator.process() بخشی از API اصلی است و انتظار دارد کلاس PdfAValidateOptions خود API اصلی را داشته باشد، که امضای متد متفاوتی دارد (add_input(source) به جای یک add_input() بدون آرگومان).

آیا UnsignedContentAbsorber.extract() به یک آرگومان Document نیاز دارد؟

نه. extract() در سطح سازگاری تولید شده هیچ آرگومانی نمی‌گیرد؛ جذب‌کننده را بسازید و مستقیماً extract() را فراخوانی کنید.


خلاصه API Reference

کلاس / متدتوضیح
Document.load_fromسندی را از مسیر فایل، بایت‌ها یا جریان بارگذاری می‌کند
Document.saveسند را به مقصد ذخیره می‌کند
Document.optimizeبهینه‌سازی کلی را انجام می‌دهد، در صورت تمایل تصاویر را فشرده می‌کند
Document.optimize_resourcesمنابع مشترکی مانند قلم‌ها و تصاویر را بهینه‌سازی می‌کند
Document.encryptسند را با یک رمز عبور رمزنگاری می‌کند
Document.change_passwordsرمز عبور سند را تغییر می‌دهد
Document.validateبرمی‌گرداند که آیا سند از نظر ساختاری معتبر است
Document.disposeمنابع مرتبط با سند را آزاد می‌کند
UnsignedContent.add_page / remove_pageیک صفحه را به بستهٔ محتوای بدون امضا اضافه یا حذف می‌کند
UnsignedContent.add_form_field / remove_form_fieldیک فیلد فرم را به بستهٔ unsigned-content اضافه یا حذف می‌کند
UnsignedContent.add_annotation / remove_annotationیک حاشیه‌نویسی را از بستهٔ unsigned-content اضافه یا حذف می‌کند
UnsignedContentAbsorber.extractمحتوی بدون امضا را به یک نمونه UnsignedContent استخراج می‌کند
UnsignedContentAbsorber.get_extractedآخرین UnsignedContent استخراج‌شده را، در صورت وجود، برمی‌گرداند
UnsignedContentAbsorber.has_extractedگزارش می‌دهد که آیا استخراج انجام شده است یا خیر
PdfAValidateOptions.add_inputیک منبع ورودی را برای اعتبارسنجی ثبت می‌کند
PdfAValidateOptions.set_option / get_optionsمقادیر گزینهٔ اعتبارسنجی را تنظیم یا می‌خواند
PdfAValidationResult.add_errorیک پیام خطا اضافه می‌کند و نتیجه را نامعتبر علامت می‌زند
PdfAValidationResult.to_dictنمایش دیکشنری از نتیجهٔ اعتبارسنجی را برمی‌گرداند

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

 فارسی