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]هي الصفحة الأولى).- التقط
InvalidPasswordExceptionوPdfParseExceptionقبلAsposePdfExceptionالأوسع عند استدعاءload_from()على مدخل غير موثوق، حتى تتمكن من الرد بشكل مختلف على كلمة مرور سيئة مقارنة بملف تالف. - استدعِ
document.optimize()أوcompress_streams()قبلsave()على المستندات التي تم تعديلها بشكل كبير لإزالة الموارد غير المستخدمة وتقليل حجم الملف. - مرّر
PdfLoadLimitsمحدودًا إلىload_from()عند معالجة ملفات PDF من مصدر غير موثوق، لتحديد حد الذاكرة وعدد الكائنات أثناء التحليل.
مشكلات شائعة
| المشكلة | السبب | الإصلاح |
|---|---|---|
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 FOSS لـ Python على محرك PDF تجاري؟
لا. إنه محرك PDF من الصفر، نقي-Python، تم إصداره تحت رخصة MIT. اعتماده الوحيد أثناء التشغيل هو cryptography وasn1crypto، يُستخدمان للتشفير والتحقق من التوقيع.
هل يمكنني إنشاء ملف PDF من الصفر بدلاً من فتح ملف موجود؟
نعم. Document() بدون أي معلمات ينشئ مستندًا فارغًا في الذاكرة؛ استدعِ document.pages.add() لإضافة صفحات قبل الحفظ.
ما هي صيغ الرستر التي يمكنني تحويل الصفحة إليها؟
Page.render وDocument.save_page_as_image ينتجان إخراج رستر بصيغة PNG أو TIFF؛ كما أن RasterizedPage المُرجع يُظهر بيانات البكسل الخام عبر get_pixel() وخاصية pixels.
ما الاستثناء الذي يجب أن ألتقطه لأخطاء الحزمة المحددة؟
التقط AsposePdfException. كل خطأ خاص بالحزمة — بما في ذلك التحليل (PdfParseException)، وكلمة المرور والتشفير (PdfSecurityException، InvalidPasswordException)، وفشل التحقق (PdfValidationException) — ينشأ منه.
إلى أين أذهب بعد ذلك؟
دليل البدء يغطي التثبيت، الترخيص، ومثالًا عمليًا أولًا. يستمر دليل المطور هذا بمواضيع إدارة المستندات مثل النماذج، المرفقات المدمجة للملفات، اكتشاف الخطوط، وإنشاء المخططات/الإشارات المرجعية.
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 | الفئة الأساسية لكل استثناء خاص بالحزمة |