مدیریت اشیاء جوهر ارائه در جاوا اسکریپت

معرفی

PowerPoint ویژگی «جوهر» (ink) را فراهم می‌کند که به شما اجازه می‌دهد خطوط آزاد رسم کنید. می‌توانید از جوهر برای هایلایت کردن اشیاء دیگر، نشان دادن ارتباط‌ها و فرآیندها و جلب توجه به موارد خاص در یک اسلاید استفاده کنید.

Aspose.Slides انواع مورد نیاز برای کار با اشیاء جوهر را ارائه می‌دهد. به عنوان مثال، کلاس Ink نمایانگر یک شیء جوهر روی اسلاید است.

تفاوت بین اشیاء معمولی و اشیاء جوهر

اشیاء روی یک اسلاید PowerPoint معمولاً توسط اشیاء شکل (shape) نمایش داده می‌شوند. در ساده‌ترین شکل، یک shape یک ظرف است که ناحیه خود شیء (قاب آن) را به همراه ویژگی‌هایی مثل اندازه ظرف، شکل و پس‌زمینه تعریف می‌کند. برای اطلاعات بیشتر به Shape Layout Format مراجعه کنید.

اما وقتی PowerPoint یک شیء جوهر را مدیریت می‌کند، تمام ویژگی‌های قاب شیء (ظرف) به جز اندازه‌اش را نادیده می‌گیرد. اندازهٔ ناحیهٔ ظرف توسط متدهای استاندارد Shape.getWidth و Shape.getHeight تعیین می‌شود:

ink_powerpoint1

ردیابی‌های جوهر

یک رد‌گیری جوهر (ink trace) عنصر پایه‌ای است که مسیر حرکت قلم را هنگام نوشتن جوهر دیجیتال ثبت می‌کند. یک رد‌گیری مجموعه‌ای از نقاط متصل را ذخیره می‌کند.

ساده‌ترین شکل رمزگذاری، مختصات X و Y هر نقطه نمونه را مشخص می‌کند. هنگامی که تمام نقاط متصل رندر شوند، تصویر زیر به‌دست می‌آید:

ink_powerpoint2

ویژگی‌های قلم برای رسم

یک قلم (brush) برای رسم خطوطی که نقاط یک رد‌گیری جوهر را به هم وصل می‌کند، استفاده می‌شود. قلم دارای رنگ و اندازهٔ خود است که توسط متدهای InkBrush.getColor و InkBrush.getSize در دسترس است.

تنظیم رنگ قلم جوهر

این کد JavaScript نشان می‌دهد چگونه رنگ یک قلم جوهر تنظیم شود:

const aspose = {
    slides: require("aspose.slides.via.java")
};
const java = require("java");

const presentation = new aspose.slides.Presentation("pres.pptx");
try {
    const slide = presentation.getSlides().get_Item(0);
    const ink = slide.getShapes().get_Item(0);
    const brush = ink.getTraces()[0].getBrush();
    const red = java.getStaticFieldValue("java.awt.Color", "RED");
    brush.setColor(red);
} finally {
    presentation.dispose();
}

تنظیم اندازه قلم جوهر

این کد JavaScript نشان می‌دهد چگونه اندازهٔ یک قلم جوهر تنظیم شود:

const aspose = {
    slides: require("aspose.slides.via.java")
};
const java = require("java");

const presentation = new aspose.slides.Presentation("pres.pptx");
try {
    const slide = presentation.getSlides().get_Item(0);
    const ink = slide.getShapes().get_Item(0);
    const brush = ink.getTraces()[0].getBrush();
    const brushSize = java.newInstanceSync("java.awt.Dimension", 5, 10);
    brush.setSize(brushSize);
} finally {
    presentation.dispose();
}

به‌طور کلی، عرض و ارتفاع یک قلم یکی نیستند، بنابراین PowerPoint اندازهٔ قلم را نمایش نمی‌دهد (بخش مربوطه خاکستری می‌شود). وقتی عرض و ارتفاع قلم برابر باشد، PowerPoint اندازهٔ آن را به این شکل نشان می‌دهد:

ink_powerpoint3

برای وضوح بیشتر، ارتفاع شیء جوهر را افزایش می‌دهیم و ابعاد مهم را مرور می‌کنیم:

ink_powerpoint4

قاب (frame) اندازهٔ قلم‌ها را در نظر نمی‌گیرد—همیشه فرض می‌کند ضخامت خط صفر است (به تصویر قبلی نگاه کنید).

بنابراین، برای تعیین ناحیهٔ قابل مشاهدهٔ کل شیء جوهر، باید اندازهٔ قلم‌های رد‌گیری‌های آن محاسبه شود. در اینجا، شیء هدف (ردیابی متن دست‌نویس) به اندازهٔ ظرف (قاب) مقیاس‌بندی شده است. وقتی اندازهٔ ظرف تغییر می‌کند، اندازهٔ قلم ثابت می‌ماند و برعکس.

ink_powerpoint5

PowerPoint رفتار مشابهی برای اشیاء متنی اعمال می‌کند:

ink_powerpoint6

کنترل ظاهر جوهر هنگام خروجی و رندرینگ

Aspose.Slides کلاس InkOptions را برای کنترل نحوهٔ نمایش اشیاء جوهر در خروجی یا رندر ارائه می‌دهد. می‌توانید با استفاده از ویژگی‌های آن، جوهر را به‌طور کامل مخفی کنید یا نحوهٔ تفسیر عملیات ماسک قلم جوهر را تغییر دهید.

گزینه‌های جوهر از طریق گزینه‌های خروجی یا رندر برای انواع خروجی‌های زیر در دسترس هستند:

خروجی ویژگی‌های گزینهٔ جوهر
PDF PdfOptions.getInkOptions
HTML HtmlOptions.getInkOptions
SVG SVGOptions.getInkOptions
TIFF TiffOptions.getInkOptions
تصویر اسلاید RenderingOptions.getInkOptions

روش‌های زیر از کلاس InkOptions دو تنظیم مشابه را ارائه می‌دهند:

  • InkOptions.getHideInk تعیین می‌کند آیا اشیاء جوهر در خروجی گنجانده شوند یا نه. مقدار پیش‌فرض آن false است.
  • InkOptions.getInterpretMaskOpAsOpacity تعیین می‌کند آیا عملیات ماسک به‌عنوان ناشفافی تفسیر شود یا نه. مقدار پیش‌فرض true است؛ برای استفاده از عملیات ROP به جای آن، متد InkOptions.setInterpretMaskOpAsOpacity را با مقدار false صدا بزنید.

مخفی کردن اشیاء جوهر در خروجی PDF

به‌طور پیش‌فرض، اشیاء جوهر هنگام خروجی قابل مشاهده هستند. برای ایجاد خروجی تمیز بدون حاشیه‌نویسی‌های دست‌نویس یا محتوای جوهر دیگر، متد InkOptions.setHideInk را با مقدار true صدا بزنید.

مثال زیر به‌زبان JavaScript یک ارائه را به PDF صادر می‌کند و تمام اشیاء جوهر را مخفی می‌سازد:

const aspose = {
    slides: require("aspose.slides.via.java")
};

const presentation = new aspose.slides.Presentation("presentation.pptx");
try {
    const pdfOptions = new aspose.slides.PdfOptions();
    pdfOptions.getInkOptions().setHideInk(true);

    presentation.save("presentation_without_ink.pdf", aspose.slides.SaveFormat.Pdf, pdfOptions);
} finally {
    presentation.dispose();
}

مخفی کردن اشیاء جوهر هنگام رندر اسلاید به‌صورت تصویر

برای مخفی کردن اشیاء جوهر هنگام رندر اسلایدها به‌صورت تصاویر نقطه‌گرا، ویژگی‌های RenderingOptions.getInkOptions را پیکربندی کنید و گزینه‌های رندر را به متد Slide.getImage منتقل کنید.

مثال زیر به‌زبان JavaScript اولین اسلاید را به تصویر PNG رندر می‌کند بدون اشیاء جوهر:

const aspose = {
    slides: require("aspose.slides.via.java")
};

const presentation = new aspose.slides.Presentation("presentation.pptx");
try {
    const renderingOptions = new aspose.slides.RenderingOptions();
    renderingOptions.getInkOptions().setHideInk(true);

    const slide = presentation.getSlides().get_Item(0);
    const image = slide.getImage(renderingOptions);
    try {
        image.save("slide_without_ink.png", aspose.slides.ImageFormat.Png);
    } finally {
        image.dispose();
    }
} finally {
    presentation.dispose();
}

کنترل رندر ماسک جوهر

تنظیم InkOptions.getInterpretMaskOpAsOpacity نحوهٔ تفسیر عملیات ماسک را هنگام رندر قلم جوهر کنترل می‌کند. مقدار پیش‌فرض true است که از شفافیت استفاده می‌کند. برای استفاده از عملیات ROP به جای آن، متد InkOptions.setInterpretMaskOpAsOpacity را با false فراخوانی کنید.

مثال زیر به‌زبان JavaScript یک اسلاید را به SVG صادر می‌کند و برای عملیات ماسک جوهر از رندر مبتنی بر ROP استفاده می‌نماید:

const aspose = {
    slides: require("aspose.slides.via.java")
};
const java = require("java");

const presentation = new aspose.slides.Presentation("presentation.pptx");
try {
    const svgOptions = new aspose.slides.SVGOptions();
    svgOptions.getInkOptions().setInterpretMaskOpAsOpacity(false);

    const outputStream = java.newInstanceSync("java.io.FileOutputStream", "slide.svg");
    try {
        const slide = presentation.getSlides().get_Item(0);
        slide.writeAsSvg(outputStream, svgOptions);
    } finally {
        outputStream.close();
    }
} finally {
    presentation.dispose();
}

همین تنظیم می‌تواند از طریق TiffOptions.getInkOptions هنگام صادرات ارائه یا رندر اسلاید به TIFF اعمال شود.

انتخاب مخفی یا حفظ جوهر

زمانی که به نسخهٔ پاک‌سازی‌شده‌ای از ارائه حاوی حاشیه‌نویسی‌ها برای توزیع بدون نشانه‌گذاری‌های مرور نیاز دارید، در طول خروجی متد InkOptions.setHideInk را با true صدا بزنید.

وقتی حاشیه‌نویسی‌های جوهر بخشی از محتوای هدف هستند (مثلاً نظرات مرور، یادداشت‌های دست‌نویس، هایلایت‌ها یا نقاشی‌هایی که باید در خروجی دیده شوند)، مقدار پیش‌فرض false برای InkOptions.getHideInk را حفظ کنید. این امکان به برنامه‌ها اجازه می‌دهد خروجی‌های مرور و نهایی را از یک ارائه بدون تغییر اشیاء جوهر منبع تولید کنند.

سؤال‌های متداول

آیا می‌توانم رنگ یا اندازهٔ یک خط جوهر موجود را تغییر دهم؟

بله. رد‌گیری را از طریق Ink.getTraces دریافت کنید و سپس InkTrace.getBrush آن را تغییر دهید. برای تغییر رنگ از InkBrush.setColor و برای تغییر اندازه از InkBrush.setSize استفاده کنید.

آیا مخفی کردن جوهر منبع ارائه را تغییر می‌دهد؟

خیر. فراخوانی InkOptions.setHideInk فقط بر نتایج رندر یا خروجی تأثیر می‌گذارد؛ اشیاء جوهر در ارائه منبع حذف یا تغییر نمی‌شوند.

کدام فرمت‌های خروجی از گزینه‌های جوهر پشتیبانی می‌کنند؟

می‌توانید گزینه‌های جوهر را برای PDF، HTML، SVG، TIFF و تصاویر بیت‌مپ اسلاید از طریق گزینه‌های خروجی یا رندر مربوطه که در جدول بالا نشان داده شده‌اند، تنظیم کنید.

مطالعهٔ بیشتر