کار با سازگاری تولید شده 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.DocumentAPI اصلی استفاده کنید مگر اینکه بهطور خاص به سطح کاهشیافتهٔ سازگاری تولیدی نیاز داشته باشید.
مسائل رایج
| مشکل | دلیل | راهحل |
|---|---|---|
متدهای 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 | نمایش دیکشنری از نتیجهٔ اعتبارسنجی را برمیگرداند |