تبدیل اسلایدهای ارائه به تصاویر در .NET
مقدمه
Aspose.Slides for .NET میتواند اسلایدهای تک تک ارائههای PowerPoint و OpenDocument را به فرمتهای PNG، JPEG، GIF، TIFF و سایر فرمتهای تصویر رندره کند.
برای تبدیل یک اسلاید به تصویر، مراحل زیر را دنبال کنید:
- ارائه را با کلاس Presentation بارگذاری کنید.
- اسلایدی که میخواهید رندر کنید را انتخاب کنید.
- در صورت نیاز، رندرینگ را با کلاسهای RenderingOptions یا TiffOptions پیکربندی کنید.
- متد GetImage را فراخوانی کنید. این متد یک شیء IImage برمیگرداند.
- متد IImage.Save را فراخوانی کنید و قالب خروجی را با مقدار ImageFormat مشخص کنید.
تبدیل اسلاید به تصویر PNG
سادهترین تبدیل از تنظیمات پیشفرض رندرینگ استفاده میکند. شیء IImage حاصل میتواند در حافظه پردازش یا در فایل ذخیره شود.
مثال زیر به زبان C# اولین اسلاید را رندر کرده و به عنوان تصویر PNG ذخیره میکند:
using Aspose.Slides;
using var presentation = new Presentation("Presentation.pptx");
var slide = presentation.Slides[0];
using var image = slide.GetImage();
image.Save("Slide_0.png", ImageFormat.Png);
تبدیل اسلایدها به تصاویر با اندازههای سفارشی
از overload متد GetImage که یک مقدار Size میپذیرد استفاده کنید تا اسلاید را با ابعاد پیکسلی دقیق رندر کنید.
مثال زیر تصویری JPEG با ابعاد ۱۸۲۰ × ۱۰۴۰ ایجاد میکند:
using System.Drawing;
using Aspose.Slides;
var imageSize = new Size(1820, 1040);
using var presentation = new Presentation("Presentation.pptx");
var slide = presentation.Slides[0];
using var image = slide.GetImage(imageSize);
image.Save("Slide_0.jpg", ImageFormat.Jpeg);
تبدیل اسلایدها با یادداشتها و نظرات به تصاویر
به طور پیشفرض، تصاویر اسلاید شامل یادداشتها یا نظرات نیستند. برای کنترل مکان نمایش یادداشتها و نظرات، یک شیء NotesCommentsLayoutingOptions را به ویژگی RenderingOptions.SlidesLayoutOptions انتساب دهید.
مثال زیر یادداشتهای کوتاه شده را زیر اسلاید و نظرات را در سمت راست آن قرار میدهد:
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
var scaleX = 2f;
var scaleY = scaleX;
var layoutOptions = new NotesCommentsLayoutingOptions
{
NotesPosition = NotesPositions.BottomTruncated,
CommentsPosition = CommentsPositions.Right,
CommentsAreaWidth = 500,
CommentsAreaColor = Color.AntiqueWhite
};
var renderingOptions = new RenderingOptions { SlidesLayoutOptions = layoutOptions };
using var presentation = new Presentation("Presentation_with_notes_and_comments.pptx");
var slide = presentation.Slides[0];
using var image = slide.GetImage(renderingOptions, scaleX, scaleY);
image.Save("Image_with_notes_and_comments_0.gif", ImageFormat.Gif);
هشدار
برای تبدیل اسلاید به تصویر، ویژگی NotesPosition را روی BottomFull تنظیم نکنید. یادداشتها ممکن است متنی بیش از اندازه تصویر ثابت داشته باشند. بهجای آن از BottomTruncated استفاده کنید.تبدیل اسلایدها به تصاویر با استفاده از گزینههای TIFF
کلاس TiffOptions به شما امکان کنترل اندازه، وضوح و سایر ویژگیهای تصویر TIFF رندر شده را میدهد.
مثال زیر اولین اسلاید را به تصویر TIFF با ابعاد ۲۱۶۰ × ۲۸۸۰ و ۳۰۰ DPI رندر میکند:
using System.Drawing;
using Aspose.Slides;
using Aspose.Slides.Export;
var tiffOptions = new TiffOptions
{
ImageSize = new Size(2160, 2880),
DpiX = 300,
DpiY = 300
};
using var presentation = new Presentation("sample.pptx");
var slide = presentation.Slides[0];
using var image = slide.GetImage(tiffOptions);
image.Save("output.tiff", ImageFormat.Tiff);
تبدیل تمام اسلایدها به تصاویر
از حلقهای برای عبور از مجموعه اسلایدها استفاده کنید تا کل ارائه را به مجموعهای از تصاویر تبدیل کنید. اسلایدهای مخفی نیز گنجانده میشوند مگر اینکه صراحتاً آنها را نادیده بگیرید.
مثال زیر هر اسلاید را به تصویر JPEG با عوامل مقیاس افقی و عمودی ۲ رندر میکند:
using Aspose.Slides;
var scaleX = 2f;
var scaleY = scaleX;
using var presentation = new Presentation("Presentation.pptx");
var slideCount = presentation.Slides.Count;
for (var index = 0; index < slideCount; index++)
{
var slide = presentation.Slides[index];
using var image = slide.GetImage(scaleX, scaleY);
image.Save($"Slide_{index}.jpg", ImageFormat.Jpeg);
}
ایجاد خروجی Enhanced Metafile
Enhanced Metafile (EMF) زمانی مفید است که گرافیکهای مبتنی بر بردار باید با Microsoft Office یا برنامههای ویندوزی دیگر که از متافایلهای ویندوز پشتیبانی میکنند، تبادل شود. برخلاف تصویر مبتنی بر پیکسل، EMF میتواند عملیات رسم برداری را که بدون از دست رفتن وضوح مقیاس میشوند، حفظ کند. با این حال، EMF عمدتاً یک قالب سازگاری برای برنامههای دارای پشتیبانی از متافایل ویندوز است و نه یک قالب مبادلهای جهانی. علاوه بر این، محتوای پیچیده اسلاید مانند تصاویر بیتمپ و برخی افکتها ممکن است بهصورت عناصر شطرنجی داخل کانتینر متافایل برداری ذخیره شوند.
صادر کردن اسلاید به EMF
متد ISlide.WriteAsEmf یک شیء ISlide را به یک جریان هدف با فرمت EMF مینویسد. مثال زیر یک ارائه را بارگذاری میکند، اولین اسلاید را انتخاب میکند و آن را به یک جریان فایل EMF مینویسد:
using System.IO;
using Aspose.Slides;
using var presentation = new Presentation("Presentation.pptx");
var slide = presentation.Slides[0];
using var emfStream = File.Create("Slide_0.emf");
slide.WriteAsEmf(emfStream);
صاحبی که جریان را به ISlide.WriteAsEmf پاس میدهد، باید پس از استفاده آن را ببندد یا آن را Dispose کند. Aspose.Slides در موقعیت فعلی جریان مینویسد و جریان را باز میگذارد.
تبدیل تصویر SVG به EMF و افزودن آن به ارائه
از ISvgImage.WriteAsEmf برای تبدیل محتوای SVG به EMF استفاده کنید. بایتهای حاصل میتوانند از طریق IImageCollection.AddImage به ارائه اضافه شوند و با IShapeCollection.AddPictureFrame روی اسلاید قرار گیرند.
مثال زیر یک SvgImage را از مارکاپ SVG میسازد، آن را به یک EMF در حافظه تبدیل میکند، متافایل را در اولین اسلاید درج میکند و ارائه را ذخیره میسازد:
using System.IO;
using Aspose.Slides;
using Aspose.Slides.Export;
var svgContent = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"200\" height=\"100\"><rect width=\"200\" height=\"100\" fill=\"#4472C4\"/></svg>";
var svgImage = new SvgImage(svgContent);
using var presentation = new Presentation();
var slide = presentation.Slides[0];
using var emfStream = new MemoryStream();
svgImage.WriteAsEmf(emfStream);
emfStream.Position = 0;
var image = presentation.Images.AddImage(emfStream);
slide.Shapes.AddPictureFrame(ShapeType.Rectangle, 20, 20, 200, 100, image);
presentation.Save("Presentation_with_emf.pptx", SaveFormat.Pptx);
ISvgImage.WriteAsEmf مالکیت جریان مقصد را بر عهده نمیگیرد. پس از نوشتن، موقعیت جریان در انتهای دادههای تولید شده است. قبل از ارسال همان جریان جستجوپذیر به یک خواننده، Position را به ابتدا بازنشانی کنید، همانطور که در بالا نشان داده شده است. جریان را تا زمانی که مصرفکننده خواندن را تمام کند باز نگه دارید و سپس آن را Dispose کنید. بهعلاوه میتوانید ToArray را فراخوانی کنید و آرایه بایت بازگرداندهشده را به IImageCollection.AddImage پاس دهید؛ ToArray تمام بافر را صرفنظر از موقعیت جاری جریان برمیگرداند.
تولید EMF در سیستمعاملهای پشتیبانیشده توسط نسخه انتخابی Aspose.Slides for .NET موجود است، اما رندرسازی میتواند در پلتفرمهای مختلف هنگام عدم دسترسی به فونتها یا وابستگیهای گرافیکی بومی متفاوت باشد. فونتهای استفادهشده در محتوای منبع را نصب کنید یا جایگزینهای مناسب را پیکربندی کنید، الزامات پلتفرم بسته Aspose.Slides خود را دنبال کنید و نتیجه را در برنامه مصرفکننده EMF هدف اعتبارسنجی کنید. برنامههای Linux و macOS اغلب پشتیبانی محدودی یا ناسازگاری در نمایش و ویرایش متافایلهای ویندوز دارند.
رندرسازی ایموجیهای رنگی
توجه
برای رندرسازی صحیح ایموجیهای رنگی هنگام تبدیل اسلایدهای ارائه به تصویر، فونتهای ایموجی استفادهشده در ارائه باید روی سیستمی که تبدیل را انجام میدهد نصب و در دسترس باشند. بهعنوان مثال، اگر ارائه از Segoe UI Emoji استفاده کند و این فونت موجود نباشد، ایموجیها ممکن است بهصورت تکرنگ در تصاویر خروجی ظاهر شوند.سوالات متداول
آیا Aspose.Slides از رندرسازی اسلایدها با انیمیشنها پشتیبانی میکند؟
خیر. متد GetImage یک تصویر ثابت از اسلاید رندر میکند و انیمیشنها را صادر نمیکند.
آیا میتوان اسلایدهای مخفی را به عنوان تصویر صادر کرد؟
بله. اسلایدهای مخفی میتوانند همانند اسلایدهای عادی رندر شوند. آنها را در حلقه پردازش گنجانده کنید، همانطور که در مثال بالا نشان داده شد.
آیا سایهها و سایر افکتها در تصاویر اسلاید حفظ میشوند؟
بله. Aspose.Slides سایهها، شفافیت و سایر افکتهای گرافیکی پشتیبانیشده را در تصاویر اسلاید رندر میکند.