إدارة كائنات الحبر في العرض التقديمي باستخدام Python عبر Java
المقدمة
يقدم PowerPoint ميزة الحبر التي تتيح لك رسم ضربات حرة. يمكن استخدام الحبر لتسليط الضوء على كائنات أخرى، وإظهار الاتصالات والعمليات، وجذب الانتباه إلى عناصر محددة على الشريحة.
توفر Aspose.Slides الأنواع اللازمة للعمل مع كائنات الحبر. على سبيل المثال، تمثل الفئة Ink كائن حبر على الشريحة.
الفرق بين الكائنات العادية وكائنات الحبر
يتم تمثيل الكائنات على شريحة PowerPoint عادةً بواسطة كائنات الشكل. في أبسط أشكالها، الشكل هو حاوية تحدد مساحة الكائن نفسه (إطارها) إلى جانب خصائص مثل حجم الحاوية، الشكل، والخلفية. لمزيد من المعلومات، راجع Shape Layout Format.
ومع ذلك، عندما يتعامل PowerPoint مع كائن حبر، يتجاهل جميع خصائص إطار الكائن (الحاوية) باستثناء حجمه. يتم تحديد حجم منطقة الحاوية بواسطة طريقتي Shape.getWidth وShape.getHeight القياسيتين:

آثار الحبر
آثار الحبر هي عنصر أساسي يُستخدم لتسجيل مسار القلم عندما يكتب المستخدم حبرًا رقميًا. يخزن الأثر تسلسلًا من النقاط المتصلة.
أبسط شكل للترميز يحدد إحداثيات X وY لكل نقطة عينة. عندما يتم عرض جميع النقاط المتصلة، تُنتج صورة كهذه:

خصائص الفرشاة للرسم
تُستخدم الفرشاة لرسم الخطوط التي تربط نقاط أثر الحبر. للفرشاة لونها وحجمها الخاصين، ويُمثل ذلك بطريقتي InkBrush.getColor وInkBrush.getSize.
ضبط لون فرشاة الحبر
يعرض هذا الكود Python كيفية ضبط لون فرشاة الحبر:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, Ink
Color = jpype.JClass("java.awt.Color")
presentation = Presentation("pres.pptx")
try:
slide = presentation.getSlides().get_Item(0)
ink = slide.getShapes().get_Item(0)
if isinstance(ink, Ink):
traces = ink.getTraces()
if len(traces) > 0:
brush = traces[0].getBrush()
brush.setColor(Color.RED)
else:
print("The ink object has no traces.")
else:
print("The first shape is not an ink object.")
finally:
presentation.dispose()
ضبط حجم فرشاة الحبر
يعرض هذا الكود Python كيفية ضبط حجم فرشاة الحبر:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, Ink
Dimension = jpype.JClass("java.awt.Dimension")
presentation = Presentation("pres.pptx")
try:
slide = presentation.getSlides().get_Item(0)
ink = slide.getShapes().get_Item(0)
if isinstance(ink, Ink):
traces = ink.getTraces()
if len(traces) > 0:
brush = traces[0].getBrush()
brush_size = Dimension(5, 10)
brush.setSize(brush_size)
else:
print("The ink object has no traces.")
else:
print("The first shape is not an ink object.")
finally:
presentation.dispose()
عمومًا، لا يتطابق عرض وارتفاع الفرشاة، لذا لا يعرض PowerPoint حجم الفرشاة (يظهر القسم المقابل من البيانات باللون الرمادي). عندما يتطابق عرض وارتفاع الفرشاة، يظهر PowerPoint حجمه بهذه الطريقة:

للتوضيح، دعونا نزيد ارتفاع كائن الحبر ونستعرض الأبعاد المهمة:

الحاوية (الإطار) لا تأخذ في الاعتبار حجم الفرش؛ فهي دائمًا تفترض أن سمك الخط صفر (انظر الصورة السابقة).
لذلك، لتحديد المنطقة المرئية لكائن الحبر بالكامل، يجب مراعاة حجم فرشاة آثاره. هنا، تم تحجيم الكائن الهدف (أثر النص المكتوب بخط اليد) إلى حجم الحاوية (الإطار). عندما يتغير حجم الحاوية، يبقى حجم الفرش ثابتًا، والعكس صحيح.

يستخدم PowerPoint سلوكًا مشابهًا لكائنات النص:

التحكم في مظهر الحبر أثناء التصدير والعرض
توفر Aspose.Slides الفئة InkOptions للتحكم في كيفية ظهور كائنات الحبر في المخرجات المُصدَّرة أو المعروضة. يمكنك استخدام خصائصها لإخفاء الحبر بالكامل أو لتغيير طريقة تفسير عمليات قناع فرشاة الحبر.
تتوفر خيارات الحبر من خلال خيارات التصدير أو العرض للعديد من صيغ الإخراج:
| الإخراج | خاصية خيارات الحبر |
|---|---|
| PdfOptions.getInkOptions | |
| HTML | HtmlOptions.getInkOptions |
| SVG | SVGOptions.getInkOptions |
| TIFF | TiffOptions.getInkOptions |
| صورة الشريحة | RenderingOptions.getInkOptions |
الطرق التالية في الفئة InkOptions تكشف عن الإعدادين نفسهما:
- getHideInk يحدد ما إذا كانت كائنات الحبر مضمنة في المخرج. القيمة الافتراضية هي
False. - getInterpretMaskOpAsOpacity يحدد ما إذا كانت عملية القناع تُفسَّر كعتامة عند عرض فرشاة الحبر. القيمة الافتراضية هي
True؛ استدعِ setInterpretMaskOpAsOpacity معFalseلاستخدام عملية ROP بدلاً من ذلك.
إخفاء كائنات الحبر في مخرجات PDF
افتراضيًا، تظل كائنات الحبر مرئية أثناء التصدير. لإنشاء مخرج نظيف بدون تعليقات مكتوبة يدويًا أو محتوى حبر آخر، استدعِ InkOptions.setHideInk مع True.
المثال التالي بلغة Python يصدر عرض تقديمي إلى PDF مع إخفاء جميع كائنات الحبر:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, PdfOptions, SaveFormat
presentation = Presentation("presentation.pptx")
try:
pdf_options = PdfOptions()
pdf_options.getInkOptions().setHideInk(True)
presentation.save("presentation_without_ink.pdf", SaveFormat.Pdf, pdf_options)
finally:
presentation.dispose()
إخفاء كائنات الحبر عند عرض الشريحة كصورة
لإخفاء كائنات الحبر عند عرض الشرائح كصور نقطية، اضبط RenderingOptions.getInkOptions ومرّر خيارات العرض إلى Slide.getImage.
المثال التالي بلغة Python يعرض الشريحة الأولى كصورة PNG بدون كائنات الحبر:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, RenderingOptions, ImageFormat
presentation = Presentation("presentation.pptx")
try:
rendering_options = RenderingOptions()
rendering_options.getInkOptions().setHideInk(True)
slide = presentation.getSlides().get_Item(0)
image = slide.getImage(rendering_options)
try:
image.save("slide_without_ink.png", ImageFormat.Png)
finally:
image.dispose()
finally:
presentation.dispose()
التحكم في عرض قناع الحبر
الإعداد InkOptions.getInterpretMaskOpAsOpacity يتحكم في كيفية تفسير عمليات القناع عند عرض فرشات الحبر. القيمة الافتراضية هي True، والتي تستخدم العتامة. لاستخدام عملية ROP بدلاً من ذلك، استدعِ InkOptions.setInterpretMaskOpAsOpacity مع False.
المثال التالي بلغة Python يصدر شريحة إلى SVG ويستخدم عرضًا يعتمد على ROP لعمليات قناع الحبر:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SVGOptions
FileOutputStream = jpype.JClass("java.io.FileOutputStream")
presentation = Presentation("presentation.pptx")
try:
svg_options = SVGOptions()
svg_options.getInkOptions().setInterpretMaskOpAsOpacity(False)
stream = FileOutputStream("slide.svg")
try:
slide = presentation.getSlides().get_Item(0)
slide.writeAsSvg(stream, svg_options)
finally:
stream.close()
finally:
presentation.dispose()
يمكن تطبيق الإعداد نفسه عبر TiffOptions.getInkOptions عند تصدير عرض تقديمي أو عرض شريحة إلى TIFF.
اختر إما إخفاء الحبر أو الحفاظ عليه
عندما تحتاج إلى نسخة نظيفة من عرض تقديمي مشروح للتوزيع دون علامات مراجعة، استدعِ InkOptions.setHideInk مع True أثناء التصدير.
اترك InkOptions.getHideInk بقيمته الافتراضية False عندما تكون تعليقات الحبر جزءًا من المحتوى المقصود، مثل تعليقات المراجعة، الملاحظات المكتوبة يدويًا، التحديدات، أو الرسومات التي يجب أن تبقى مرئية في النتيجة المُصدَّرة. يتيح ذلك للتطبيقات إنشاء مخرجات مراجعة ونهائية منفصلة من نفس العرض التقديمي دون تعديل كائنات الحبر الأصلية.
الأسئلة المتكررة
هل يمكنني تغيير لون أو حجم ضربة حبر موجودة؟
نعم. احصل على الأثر عبر Ink.getTraces، ثم غير InkTrace.getBrush. استدعِ InkBrush.setColor أو InkBrush.setSize لتغيير الفرشاة.
هل يؤدي إخفاء الحبر إلى تغيير العرض التقديمي الأصلي؟
لا. استدعاء InkOptions.setHideInk ي影响 فقط النتيجة المعروضة أو المُصدَّرة؛ ولا يزيل أو يُعدِّل كائنات الحبر في العرض التقديمي الأصلي.
أي صيغ تصدير تدعم خيارات الحبر؟
يمكنك ضبط خيارات الحبر لصيغ PDF وHTML وSVG وTIFF وصور الشرائح النقطية من خلال خيارات التصدير أو العرض المقابلة المذكورة أعلاه.
قراءة إضافية
- لقراءة عن الأشكال بشكل عام، راجع قسم PowerPoint Shapes.
- لمزيد من المعلومات حول القيم الفعّالة، انظر Shape Effective Properties.
- لتفاصيل تصدير PDF، راجع Convert PPT and PPTX to PDF.
- لتفاصيل تصدير HTML، راجع Convert PowerPoint Presentations to HTML.
- لتفاصيل تصدير SVG، راجع Render Presentation Slides as SVG Images.
- لتفاصيل تصدير TIFF، راجع Convert PowerPoint Presentations to TIFF.
- لتفاصيل عرض الشرائح كصور، راجع Convert Presentation Slides to Images.