تبدیل فایل‌های PostScript EPS یا PS به فرمت‌های تصویر معمولی یک کار معمولی است که ممکن است از شما خواسته شود. اگر تعداد زیادی از این گونه فایل ها دارید، تبدیل آنها به صورت برنامه ای کارآمدتر خواهد بود. با توجه به این موضوع، این مقاله به شما آموزش می دهد که چگونه فایل های PostScript EPS/PS را با استفاده از C++ به فرمت تصویر PNG یا JPG تبدیل کنید.

C++ API برای تبدیل فایل‌های EPS/PS PostScript به تصاویر PNG یا JPG

Aspose.Page for C++ یک کتابخانه C++ برای ارائه و دستکاری فایل‌های XPS و PostScript است. می توانید از آن برای پردازش و تبدیل فایل های XPS و EPS/PS به چندین فرمت دیگر مانند PDF، JPEG، BMP، TIFF و غیره استفاده کنید. می‌توانید API را از طریق NuGet نصب کنید یا آن را مستقیماً از بخش دانلودها دانلود کنید.

PM> Install-Package Aspose.Page.Cpp

با استفاده از C++ فایل‌های EPS/PS PostScript را به فرمت تصویر PNG تبدیل کنید

در زیر مراحل تبدیل فایل های EPS یا PS به فرمت تصویر PNG آورده شده است.

  • جریان ورودی PostScript را راه اندازی کنید.
  • با استفاده از جریان ورودی یک نمونه از کلاس PsDocument ایجاد کنید.
  • یک شی از کلاس ImageSaveOptions را نمونه سازی کنید.
  • یک نمونه از کلاس ImageDevice ایجاد کنید.
  • با استفاده از [PsDocument->Save(System::SharedPtr، فایل PostScript را در ImageDevice ذخیره کنید.Aspose::Page::Device دستگاه، سیستم::SharedPtr گزینه ها)]14 روش.
  • بایت های تصویر را با استفاده از روش ImageDevice->getImagesBytes() بازیابی کنید.
  • بایت های تصویر را تکرار کنید.
  • جریان خروجی را راه اندازی کنید و تصویر PNG را ذخیره کنید.

کد نمونه زیر نحوه تبدیل فایل های PostScript EPS/PS را با استفاده از C++ به فرمت تصویر PNG نشان می دهد.

// یک نمونه از کلاس ImageFormat ایجاد کنید
System::SharedPtr<System::Drawing::Imaging::ImageFormat> imageFormat = System::Drawing::Imaging::ImageFormat::get_Png();

// جریان ورودی PostScript را راه اندازی کنید
System::SharedPtr<System::IO::FileStream> psStream = System::MakeObject<System::IO::FileStream>(u"SourceDirectory\\inputForImage.ps", System::IO::FileMode::Open, System::IO::FileAccess::Read);

// یک نمونه از کلاس PsDocument ایجاد کنید
System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);

// اگر می خواهید فایل Postscript را با وجود خطاهای جزئی تبدیل کنید، این پرچم را تنظیم کنید
bool suppressErrors = true;

// شی ImageSaveOptions را با پارامترهای لازم راه اندازی کنید.
System::SharedPtr<Aspose::Page::EPS::Device::ImageSaveOptions> options = System::MakeObject<Aspose::Page::EPS::Device::ImageSaveOptions>(suppressErrors);

// اگر می خواهید پوشه خاصی را اضافه کنید که فونت ها در آن ذخیره می شوند. پوشه فونت های پیش فرض در سیستم عامل همیشه گنجانده شده است.
options->set_AdditionalFontsFolders(System::MakeArray<System::String>({ u"{FONT_FOLDER}" }));

// فرمت تصویر پیش فرض PNG است و تنظیم آن در ImageDevice الزامی نیست
// اندازه پیش فرض تصویر 595x842 است و تنظیم آن در ImageDevice الزامی نیست
System::SharedPtr<Aspose::Page::EPS::Device::ImageDevice> device = System::MakeObject<Aspose::Page::EPS::Device::ImageDevice>();
// اما اگر نیاز به تعیین اندازه و فرمت تصویر دارید، از سازنده با پارامترها استفاده کنید
//دستگاه ImageDevice = New ImageDevice(new System.Drawing.Size(595, 842)، System.Drawing.Imaging.ImageFormat.Jpeg);

{
	auto __finally_guard_0 = ::System::MakeScopeGuard([&psStream]()
		{
			psStream->Close();
		});

	try
	{
		document->Save(device, options);
	}
	catch (...)
	{
		throw;
	}
}

System::ArrayPtr<System::ArrayPtr<uint8_t>> imagesBytes = device->get_ImagesBytes();

int32_t i = 0;

{
	for (System::ArrayPtr<uint8_t> imageBytes : imagesBytes)
	{
		System::String imagePath = System::IO::Path::GetFullPath(System::String(u"OutputDirectory\\out_image") + System::Convert::ToString(i) + u"." + System::ObjectExt::ToString(imageFormat).ToLower());
		{
			// جریان خروجی را راه اندازی کنید
			System::SharedPtr<System::IO::FileStream> fs = System::MakeObject<System::IO::FileStream>(imagePath, System::IO::FileMode::Create, System::IO::FileAccess::Write);

			// پاک کردن منابع تحت عبارت «استفاده»
			System::Details::DisposeGuard<1> __dispose_guard_1({ fs });
			// -----------------------------------------

			try
			{
				fs->Write(imageBytes, 0, imageBytes->get_Length());
			}
			catch (...)
			{
				__dispose_guard_1.SetCurrentException(std::current_exception());
			}
		}
		i++;
	}
}

تبدیل فایل های PostScript EPS/PS به فرمت تصویر JPG با استفاده از ++C

برای تبدیل فایل های EPS یا PS به فرمت تصویر JPG از مراحل زیر استفاده کنید.

  • جریان ورودی PostScript را راه اندازی کنید.
  • یک نمونه از کلاس PsDocument با استفاده از جریان ورودی ایجاد کنید.
  • یک نمونه از کلاس ImageSaveOptions ایجاد کنید.
  • یک شی از کلاس ImageFormat را نمونه سازی کنید.
  • یک نمونه از کلاس ImageDevice با استفاده از شی ImageFormat ایجاد کنید.
  • با استفاده از [PsDocument->Save(System::SharedPtr، فایل PostScript را در ImageDevice ذخیره کنید.Aspose::Page::Device دستگاه، سیستم::SharedPtr گزینه ها)]22 روش.
  • بایت های تصویر را با استفاده از روش ImageDevice->getImagesBytes() بازیابی کنید.
  • بایت های تصویر را تکرار کنید.
  • جریان خروجی را راه اندازی کنید و تصویر JPG را ذخیره کنید.

کد نمونه زیر نحوه تبدیل فایل های PostScript EPS/PS را به فرمت تصویر JPG با استفاده از C++ نشان می دهد.

// جریان ورودی PostScript را راه اندازی کنید
System::SharedPtr<System::IO::FileStream> psStream = System::MakeObject<System::IO::FileStream>(u"SourceDirectory\\inputForImage.ps", System::IO::FileMode::Open, System::IO::FileAccess::Read);

// یک نمونه از کلاس PsDocument ایجاد کنید
System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);

// اگر می خواهید فایل Postscript را با وجود خطاهای جزئی تبدیل کنید، این پرچم را تنظیم کنید
bool suppressErrors = true;

// شی ImageSaveOptions را با پارامترهای لازم راه اندازی کنید.
System::SharedPtr<Aspose::Page::EPS::Device::ImageSaveOptions> options = System::MakeObject<Aspose::Page::EPS::Device::ImageSaveOptions>(suppressErrors);

// اگر می خواهید پوشه خاصی را اضافه کنید که فونت ها در آن ذخیره می شوند. پوشه فونت های پیش فرض در سیستم عامل همیشه گنجانده شده است.
options->set_AdditionalFontsFolders(System::MakeArray<System::String>({ u"{FONT_FOLDER}" }));

// یک نمونه از کلاس ImageFormat ایجاد کنید
System::SharedPtr<System::Drawing::Imaging::ImageFormat> imageFormat = System::Drawing::Imaging::ImageFormat::get_Jpeg();

// فرمت تصویر پیش فرض PNG است و تنظیم آن در ImageDevice الزامی نیست
// اندازه پیش فرض تصویر 595x842 است و تنظیم آن در ImageDevice الزامی نیست
System::SharedPtr<Aspose::Page::EPS::Device::ImageDevice> device = System::MakeObject<Aspose::Page::EPS::Device::ImageDevice>(imageFormat);
// اما اگر نیاز به تعیین اندازه و فرمت تصویر دارید، از سازنده با پارامترها استفاده کنید
//دستگاه ImageDevice = New ImageDevice(new System.Drawing.Size(595, 842)، System.Drawing.Imaging.ImageFormat.Jpeg);

{
	auto __finally_guard_0 = ::System::MakeScopeGuard([&psStream]()
		{
			psStream->Close();
		});

	try
	{
		document->Save(device, options);
	}
	catch (...)
	{
		throw;
	}
}

System::ArrayPtr<System::ArrayPtr<uint8_t>> imagesBytes = device->get_ImagesBytes();

int32_t i = 0;

{
	for (System::ArrayPtr<uint8_t> imageBytes : imagesBytes)
	{
		System::String imagePath = System::IO::Path::GetFullPath(System::String(u"OutputDirectory\\out_image") + System::Convert::ToString(i) + u"." + System::ObjectExt::ToString(imageFormat).ToLower());
		{
			// جریان خروجی را راه اندازی کنید
			System::SharedPtr<System::IO::FileStream> fs = System::MakeObject<System::IO::FileStream>(imagePath, System::IO::FileMode::Create, System::IO::FileAccess::Write);

			// پاک کردن منابع تحت عبارت «استفاده»
			System::Details::DisposeGuard<1> __dispose_guard_1({ fs });
			// -----------------------------------------

			try
			{
				fs->Write(imageBytes, 0, imageBytes->get_Length());
			}
			catch (...)
			{
				__dispose_guard_1.SetCurrentException(std::current_exception());
			}
		}
		i++;
	}
}

مجوز رایگان دریافت کنید

با درخواست [مجوز موقت رایگان] می‌توانید API را بدون محدودیت ارزیابی امتحان کنید.

نتیجه

در این مقاله با نحوه تبدیل فایل های PostScript EPS/PS به فرمت های تصویری PNG و JPG با استفاده از ++C آشنا شده اید. شما قطعه کد کامل را به همراه مراحل لازم برای رسیدن به این هدف مشاهده کرده اید. Aspose.Page برای C++ بسیاری از ویژگی های اضافی را ارائه می دهد که می توانید با مراجعه به مستندات رسمی به تفصیل آن ها را بررسی کنید. در صورت وجود هرگونه سوال، لطفاً در [تالار گفتمان پشتیبانی رایگان26 ما با ما تماس بگیرید.

همچنین ببینید