المقدمة
Aspose.PDF FOSS لـ Python يتضمن حزمة فرعية aspose_pdf.generated مع أربعة وحدات: document.py، forms.py، pdfa.py، وsecurity.py. لا يتم إعادة تصدير أي منها من حزمة المستوى العلوي aspose_pdf، لذا كل فئة في هذا الدليل يتم استيرادها عبر مسارها الكامل المنقّط — from aspose_pdf.generated.document import Document، وليس from aspose_pdf import Document.
الوحدات الأربع تتبع نهجين مختلفين. generated.document وgenerated.forms وgenerated.pdfa كلٌ يعرّف فصوله الخاصة: تنفيذات مستقلة تعكس بنية Document في الحزمة الرئيسية، UnsignedContent/UnsignedContentAbsorber، وPdfAValidateOptions/PdfAValidationResult — مفيدة للشفرة المكتوبة ضد هذا التخطيط المعكوس للمساحة الاسمية، لكنها مجموعة حقيقية منفصلة من الفصول بدلاً من الأسماء المستعارة. من ناحية أخرى، generated.security لا يقوم بأي إعادة تنفيذ: فهو يستورد CompromiseCheckResult، SignaturesCompromiseDetector، وتعدادات التحقق مباشرةً من aspose_pdf.security وaspose_pdf.validation ويعيد تصديرها، لذا كلا مساري الاستيراد يشاركان نفس كائن الفئة.
يغطي هذا الدليل جميع الأربعة، وهو صريح بشأن الأماكن التي تتصرف فيها فئة generated بشكل مختلف عن نظيرها في الحزمة الرئيسية ذات الاسم نفسه — Document وUnsignedContentAbsorber موجودتان في مكانين مع تنفيذين مختلفين، وهو بالضبط النوع من الأمور التي يسهل ارتكاب خطأ فيها عند الاستيراد بالاسم فقط.
Aspose.PDF FOSS لـ Python هي حزمة Python، aspose-pdf-foss-for-python، صادرة تحت رخصة MIT، وتتطلب Python 3.11 أو أحدث. اسم الوحدة العليا هو aspose_pdf؛ راجع قسم البدء السريع أدناه للتثبيت. تعتمد الحزمة الأساسية فقط على cryptography وasn1crypto؛ الإضافات الاختيارية تضيف فك تشفير الصور بناءً على Pillow، ودعم خطوط WOFF2 بناءً على Brotli، وتخطيط نص معقد يعتمد على HarfBuzz.
الميزات الرئيسية
تنفيذ مستند ثانٍ
aspose_pdf.generated.document.Document يطبق نفس دورة الحياة الأساسية كما في aspose_pdf.Document الرئيسي — load_from()، save()، encrypt()/decrypt()/change_passwords()، optimize()/optimize_resources()، repair()، flatten()، وvalidate()/check() — فوق نفس محرك aspose_pdf.engine.simple_pdf.SimplePdf. إنه يعكس جزءًا من Document الرئيسي: لا يحتوي على تأليف صفحات بنمط pages.add()، ولا على form/outlines/attachments، ولا على render_page(). نظرًا لأن اسم الصنف يتصادم مع Document الخاص بالحزمة الرئيسية، استوردها تحت اسم مستعار عندما تكون الحاجة إلى كليهما في نفس الوحدة.
from aspose_pdf import Document
from aspose_pdf.generated.document import Document as CompatDocument
with Document() as document:
document.pages.add()
document.save("source.pdf")
compat = CompatDocument()
compat.load_from("source.pdf")
print(compat.page_count, compat.is_encrypted)
compat.optimize(compress_images=True)
compat.save("optimized.pdf", overwrite=True)
compat.dispose()
حزم المحتوى غير الموقع
aspose_pdf.generated.forms.UnsignedContentAbsorber وUnsignedContent يقدمان حاوية للحقول غير الموقعة، الصفحات، والتعليقات التوضيحية. هذا يختلف عن aspose_pdf.UnsignedContentAbsorber(document) على المستوى العلوي، الذي يأخذ Document حقيقيًا ويُفلتر form_fields/annotations الخاص به للعثور على العناصر التي تكون سمة is_signed/signed فيها خاطئة. نسخة generated.forms لا تأخذ أي مستند على الإطلاق — extract() ببساطة تُحزم أي pages، form_fields، وannotations تمررها كوسائط كلمة مفتاحية إلى كائن UnsignedContent، وهو مفيد عندما تكون العناصر غير الموقعة قد جُمعت مسبقًا في مكان آخر وتحتاج فقط إلى الحاوية المشتركة ومُعدِّلاتها بنمط add_page()/remove_page().
from aspose_pdf.generated.forms import UnsignedContentAbsorber
absorber = UnsignedContentAbsorber()
content = absorber.extract(
form_fields=["signature_field", "initials_field"],
annotations=["review_stamp"],
)
print(absorber.has_extracted(), content.form_fields, content.annotations)
content.add_page("page-1")
absorber.reset()
print(absorber.get_extracted())
خيارات التحقق PDF/A والنتائج
aspose_pdf.generated.pdfa.PdfAValidateOptions يجمع إعدادات التحقق ومصادر الإدخال؛ PdfAValidationResult يجمع النتيجة. PdfAValidateOptions.add_input() يتحقق من مسار نصي باستخدام Path.exists() قبل قبوله ويرفع PdfIOException إذا كان الملف مفقودًا، بحيث يكتشف المتصل مسار الإدخال الخاطئ فورًا بدلاً من وقت التحقق.
from aspose_pdf import Document
from aspose_pdf.exceptions import PdfIOException
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult
with Document() as document:
document.pages.add()
document.save("candidate.pdf")
options = PdfAValidateOptions()
options.set_option("pdfa_version", "PDF/A-2b")
options.add_input("candidate.pdf")
print(options.get_options(), options.inputs)
try:
options.add_input("missing.pdf")
except PdfIOException as error:
print(f"rejected: {error}")
result = PdfAValidationResult()
result.add_error("Missing /OutputIntent for PDF/A-2b")
print(result.is_valid, result.to_dict())
أنواع الأمان والتحقق المُعاد تصديرها
aspose_pdf.generated.security يستورد CompromiseCheckResult وSignaturesCompromiseDetector مباشرةً من aspose_pdf.security، وCertificationLevel، RevocationStatus، TrustStatus، ValidationMethod، ValidationMode، ValidationOptions، ValidationResult، وValidationStatus من aspose_pdf.validation. على عكس Document وUnsignedContentAbsorber، لا توجد إعادة تنفيذ مستقلة هنا — كلا مسار الاستيراد يُعيد نفس الكائن.
from aspose_pdf.generated.security import SignaturesCompromiseDetector
from aspose_pdf.security import SignaturesCompromiseDetector as CanonicalDetector
assert SignaturesCompromiseDetector is CanonicalDetector
detector = SignaturesCompromiseDetector(document=None)
result = detector.check()
print(result.compromised, result.reasons)
بدء سريع
قم بتثبيت الحزمة، ثم أنشئ مستندًا باستخدام Document الرئيسي، احفظه، وقم بتشغيله عبر خيارات generated.pdfa وكائنات النتيجة.
git clone https://github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python.git
cd Aspose-PDF-FOSS-for-Python
pip install -e .from aspose_pdf import Document
from aspose_pdf.generated.pdfa import PdfAValidateOptions, PdfAValidationResult
with Document() as document:
page = document.pages.add()
page.add_text("PDF/A candidate", x=72, y=740, font_size=20)
document.save("candidate.pdf")
options = PdfAValidateOptions()
options.set_option("pdfa_version", "PDF/A-2b")
options.add_input("candidate.pdf")
result = PdfAValidationResult()
if not options.inputs:
result.add_error("No inputs registered")
print(result.to_dict())
الصيغ المدعومة
| تنسيق | امتداد | قراءة | كتابة |
|---|---|---|---|
| نعم | نعم |
قراءة وكتابة ملفات PDF هي Aspose.PDF FOSS للوظيفة الأساسية لـ Python. كل فئة في هذا الدليل — Document الرئيسي، والمرآة generated.document.Document، ومساعدي PDF/A — تعمل على إدخال وإخراج PDF عبر محرك SimplePdf المشترك؛ aspose_pdf.generated يغيّر الفئة التي تستوردها، وليس صيغة الملف التي يتم معالجتها.
المصدر المفتوح والترخيص
Aspose.PDF FOSS لـ Python صُدرت تحت ترخيص MIT: لا قيود على الاستخدام، ولا رسوم تشغيل، ولا متطلبات تسجيل للاستخدام التجاري أو الشخصي. الكود المصدري مستضاف على github.com/aspose-pdf-foss/Aspose-PDF-FOSS-for-Python، والحزمة منشورة على PyPI باسم aspose-pdf-foss-for-python.