العمل مع الرسومات المتجهة في بايثون
Aspose.PDF لبيثون عبر .NET يوفر ممتص الرسومات فئة للوصول إلى الرسومات المتجهة الموجودة بالفعل في صفحة PDF ومعالجتها. اتصل بها visit طريقة على أي صفحة لاستخراج المسارات والأشكال والعوامل الرسومية الأخرى، ثم نقل هذه العناصر أو إزالتها أو نسخها حسب الحاجة.
استخدم هذه الصفحة عندما تحتاج إلى فحص أو تعديل عناصر الرسم المتجه المضمنة في PDF موجود، بدلاً من رسم أشكال جديدة من البداية.
استخراج الرسومات
الاستخراج هو نقطة البداية لجميع مهام الرسومات المتجهة. GraphicsAbsorber يقرأ تدفق محتوى الصفحة ويعرض كل عنصر رسومي بمرجع الصفحة والموضع وعوامل التشغيل الأولية.
- افتح وثيقة PDF.
- قم بإنشاء ممتص الرسومات مثال.
- اتصل
visitعلى الصفحة المستهدفة للتعبئةelements. - قم بتكرار الغطاء
elementsلفحص الموقع وعدد المشغلين.
import aspose.pdf as ap
import sys
from os import path
def using_graphics_absorber(infile: str):
with ap.Document(infile) as document:
with ap.vector.GraphicsAbsorber() as graphics_absorber:
page = document.pages[1]
graphics_absorber.visit(page)
for element in graphics_absorber.elements:
print(f"Page Number: {element.source_page.number}")
print(f"Position: ({element.position.x}, {element.position.y})")
print(f"Number of Operators: {element.operators.length}")
GraphicsAbsorber هو جزء من aspose.pdf.vector مساحة الاسم وهي مصممة خصيصًا للتفاعل مع الرسومات المتجهة في تدفقات محتوى PDF.
رسومات متحركة
بعد الاستخراج، قم بتعيين جديد position على كل عنصر لنقله على نفس الصفحة. قم بتغليف التحديثات في suppress_update / resume_update يتم إجراء المكالمات إلى تدفق المحتوى دفعة واحدة في عملية واحدة وتجنب عمليات إعادة الطلاء الزائدة عن الحاجة.
- افتح وثيقة PDF.
- قم بإنشاء
GraphicsAbsorberواتصلvisitعلى الصفحة المستهدفة. - اتصل
suppress_updateلإيقاف عمليات الكتابة في بث المحتوى مؤقتًا. - قم بتحديث
positionلكل عنصر. - اتصل
resume_updateلتنفيذ جميع التغييرات مرة واحدة. - احفظ المستند المعدل.
import aspose.pdf as ap
import sys
from os import path
def move_graphics(infile: str, outfile: str):
with ap.Document(infile) as document:
with ap.vector.GraphicsAbsorber() as graphics_absorber:
page = document.pages[1]
graphics_absorber.visit(page)
graphics_absorber.suppress_update()
for element in graphics_absorber.elements:
position = element.position
element.position = ap.Point(position.x + 150, position.y - 10)
graphics_absorber.resume_update()
document.save(outfile)
إزالة الرسومات
لحذف عناصر متجهة محددة من صفحة، قم بالتصفية حسب الموضع أو المستطيل المحيط ثم قم بإزالتها. يوفر Aspose.PDF for Python طريقتين اعتمادًا على ما إذا كنت تريد إزالة العناصر المضمنة أو جمعها أولاً.
الطريقة الأولى: إزالة المضمن باستخدام حدود المستطيل
يتحقق هذا الأسلوب من موضع كل عنصر مقابل المستطيل ويستدعي element.remove() مباشرة داخل الحلقة. استخدمه عندما تريد رمزًا موجزًا ولا تحتاج إلى فحص المجموعة التي تمت إزالتها بعد ذلك.
- افتح وثيقة PDF.
- قم بإنشاء
GraphicsAbsorberواتصلvisitعلى الصفحة المستهدفة. - حدد الهدف المستطيل.
- اتصل
suppress_updateلإيقاف عمليات الكتابة في بث المحتوى مؤقتًا. - كرر
elements، الاتصالremove()على كل عنصر يقع موضعه داخل المستطيل. - اتصل
resume_updateلارتكاب عمليات الحذف. - احفظ المستند المعدل.
import aspose.pdf as ap
import sys
from os import path
def remove_graphics_method_1(infile: str, outfile: str):
with ap.Document(infile) as document:
with ap.vector.GraphicsAbsorber() as graphics_absorber:
page = document.pages[1]
graphics_absorber.visit(page)
rectangle = ap.Rectangle(70, 248, 170, 252, True)
graphics_absorber.suppress_update()
for element in graphics_absorber.elements:
if rectangle.contains(element.position, False):
element.remove()
graphics_absorber.resume_update()
document.save(outfile)
الطريقة 2: جمع العناصر أولاً، ثم حذفها
يجمع هذا الأسلوب العناصر المطابقة في مجموعة العناصر الرسومية وتمرر المجموعة إلى page.delete_graphics. استخدمه عندما تحتاج إلى مراجعة أو تسجيل ما ستتم إزالته قبل تنفيذ الحذف.
- افتح وثيقة PDF.
- قم بإنشاء
GraphicsAbsorberواتصلvisitعلى الصفحة المستهدفة. - حدد المستطيل المستهدف.
- كرر
elementsوأضف عناصر مطابقة إلىGraphicElementCollection. - اتصل
page.contents.suppress_updateلإيقاف عمليات الكتابة في بث المحتوى مؤقتًا. - اتصل
page.delete_graphicsمع المجموعة. - اتصل
page.contents.resume_updateلارتكاب عمليات الحذف. - احفظ المستند المعدل.
import aspose.pdf as ap
import sys
from os import path
def remove_graphics_method_2(infile: str, outfile: str):
with ap.Document(infile) as document:
with ap.vector.GraphicsAbsorber() as graphics_absorber:
page = document.pages[1]
rectangle = ap.Rectangle(70, 248, 170, 252, True)
graphics_absorber.visit(page)
removed_elements_collection = ap.vector.GraphicElementCollection()
for element in graphics_absorber.elements:
if rectangle.contains(element.position, False):
removed_elements_collection.add(element)
page.contents.suppress_update()
page.delete_graphics(removed_elements_collection)
page.contents.resume_update()
document.save(outfile)
إضافة رسومات إلى صفحة أخرى
يمكن وضع العناصر المتجهة المستخرجة من صفحة واحدة على أي صفحة أخرى في نفس المستند. تتوفر طريقتان: إضافة عناصر واحدة تلو الأخرى، أو تمرير المجموعة بأكملها في مكالمة واحدة.
الطريقة الأولى: إضافة عناصر بشكل فردي
استخدم هذه الطريقة عندما تحتاج إلى التحكم في كل عنصر، مثل تصفية العناصر الفردية أو تحويلها قبل وضعها على صفحة الوجهة.
- افتح وثيقة PDF.
- قم بإنشاء
GraphicsAbsorberواتصلvisitعلى صفحة المصدر. - أضف صفحة وجهة جديدة إلى المستند.
- اتصل
page_2.contents.suppress_updateلإيقاف عمليات الكتابة في بث المحتوى مؤقتًا. - اتصل
element.add_on_page(page_2)لكل عنصر. - اتصل
page_2.contents.resume_updateلارتكاب جميع الإضافات. - احفظ المستند المعدل.
import aspose.pdf as ap
import sys
from os import path
def add_to_another_page_method_1(infile: str, outfile: str):
with ap.Document(infile) as document:
with ap.vector.GraphicsAbsorber() as graphics_absorber:
page_1 = document.pages[1]
page_2 = document.pages.add()
graphics_absorber.visit(page_1)
page_2.contents.suppress_update()
for element in graphics_absorber.elements:
element.add_on_page(page_2)
page_2.contents.resume_update()
document.save(outfile)
الطريقة 2: إضافة المجموعة بأكملها مرة واحدة
استخدم هذه الطريقة عندما تريد نسخ جميع العناصر المستخرجة إلى صفحة في عملية واحدة دون التكرار يدويًا.
- افتح وثيقة PDF.
- قم بإنشاء
GraphicsAbsorberواتصلvisitعلى صفحة المصدر. - أضف صفحة وجهة جديدة إلى المستند.
- اتصل
page_2.contents.suppress_updateلإيقاف عمليات الكتابة في بث المحتوى مؤقتًا. - اتصل
page_2.add_graphicsمع الكاملelementsمجموعة. - اتصل
page_2.contents.resume_updateلارتكاب جميع الإضافات. - احفظ المستند المعدل.
import aspose.pdf as ap
import sys
from os import path
def add_to_another_page_method_2(infile: str, outfile: str):
with ap.Document(infile) as document:
with ap.vector.GraphicsAbsorber() as graphics_absorber:
page_1 = document.pages[1]
page_2 = document.pages.add()
graphics_absorber.visit(page_1)
page_2.contents.suppress_update()
page_2.add_graphics(graphics_absorber.elements, None)
page_2.contents.resume_update()
document.save(outfile)