Att konvertera PostScript EPS- eller PS-filer till vanliga bildformat är en vanlig uppgift som du kan behöva göra. Om du har ett stort antal sådana filer blir det mer effektivt att konvertera dem programmatiskt. Mot bakgrund av detta kommer den här artikeln att lära dig hur du konverterar PostScript EPS/PS-filer till PNG- eller JPG-bildformat med C++.

C++ API för att konvertera PostScript EPS/PS-filer till PNG- eller JPG-bilder

Aspose.Page for C++ är ett C++-bibliotek för att rendera och manipulera XPS- och PostScript-filer. Du kan använda den för att bearbeta och konvertera XPS- och EPS/PS-filer till flera andra format som PDF, JPEG, BMP, TIFF, etc. Du kan antingen installera API:t genom NuGet eller ladda ner det direkt från avsnittet downloads.

PM> Install-Package Aspose.Page.Cpp

Konvertera PostScript EPS/PS-filer till PNG-bildformat med C++

Följande är stegen för att konvertera EPS- eller PS-filer till PNG-bildformat.

Följande exempelkod visar hur man konverterar PostScript EPS/PS-filer till PNG-bildformat med C++.

// Skapa en instans av klassen ImageFormat
System::SharedPtr<System::Drawing::Imaging::ImageFormat> imageFormat = System::Drawing::Imaging::ImageFormat::get_Png();

// Initiera PostScript-indataström
System::SharedPtr<System::IO::FileStream> psStream = System::MakeObject<System::IO::FileStream>(u"SourceDirectory\\inputForImage.ps", System::IO::FileMode::Open, System::IO::FileAccess::Read);

// Skapa en instans av klassen PsDocument
System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);

// Om du vill konvertera Postscript-fil trots mindre fel, ställ in denna flagga
bool suppressErrors = true;

// Initiera ImageSaveOptions-objekt med nödvändiga parametrar.
System::SharedPtr<Aspose::Page::EPS::Device::ImageSaveOptions> options = System::MakeObject<Aspose::Page::EPS::Device::ImageSaveOptions>(suppressErrors);

// Om du vill lägga till en speciell mapp där teckensnitt lagras. Mappen för standardteckensnitt i OS ingår alltid.
options->set_AdditionalFontsFolders(System::MakeArray<System::String>({ u"{FONT_FOLDER}" }));

// Standardbildformatet är PNG och det är inte obligatoriskt att ställa in det i ImageDevice
// Standardbildstorleken är 595x842 och det är inte obligatoriskt att ställa in den i ImageDevice
System::SharedPtr<Aspose::Page::EPS::Device::ImageDevice> device = System::MakeObject<Aspose::Page::EPS::Device::ImageDevice>();
// Men om du behöver ange storlek och bildformat, använd konstruktor med parametrar
//ImageDevice device = 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());
		{
			// Initiera utdataström
			System::SharedPtr<System::IO::FileStream> fs = System::MakeObject<System::IO::FileStream>(imagePath, System::IO::FileMode::Create, System::IO::FileAccess::Write);

			// Rensa resurser under "använder" uttalande
			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++;
	}
}

Konvertera PostScript EPS/PS-filer till JPG-bildformat med C++

För att konvertera EPS- eller PS-filer till JPG-bildformat, använd stegen nedan.

Följande exempelkod visar hur man konverterar PostScript EPS/PS-filer till JPG-bildformat med C++.

// Initiera PostScript-indataström
System::SharedPtr<System::IO::FileStream> psStream = System::MakeObject<System::IO::FileStream>(u"SourceDirectory\\inputForImage.ps", System::IO::FileMode::Open, System::IO::FileAccess::Read);

// Skapa en instans av klassen PsDocument
System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);

// Om du vill konvertera Postscript-fil trots mindre fel, ställ in denna flagga
bool suppressErrors = true;

// Initiera ImageSaveOptions-objekt med nödvändiga parametrar.
System::SharedPtr<Aspose::Page::EPS::Device::ImageSaveOptions> options = System::MakeObject<Aspose::Page::EPS::Device::ImageSaveOptions>(suppressErrors);

// Om du vill lägga till en speciell mapp där teckensnitt lagras. Mappen för standardteckensnitt i OS ingår alltid.
options->set_AdditionalFontsFolders(System::MakeArray<System::String>({ u"{FONT_FOLDER}" }));

// Skapa en instans av klassen ImageFormat
System::SharedPtr<System::Drawing::Imaging::ImageFormat> imageFormat = System::Drawing::Imaging::ImageFormat::get_Jpeg();

// Standardbildformatet är PNG och det är inte obligatoriskt att ställa in det i ImageDevice
// Standardbildstorleken är 595x842 och det är inte obligatoriskt att ställa in den i ImageDevice
System::SharedPtr<Aspose::Page::EPS::Device::ImageDevice> device = System::MakeObject<Aspose::Page::EPS::Device::ImageDevice>(imageFormat);
// Men om du behöver ange storlek och bildformat, använd konstruktor med parametrar
//ImageDevice device = 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());
		{
			// Initiera utdataström
			System::SharedPtr<System::IO::FileStream> fs = System::MakeObject<System::IO::FileStream>(imagePath, System::IO::FileMode::Create, System::IO::FileAccess::Write);

			// Rensa resurser under "använder" uttalande
			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++;
	}
}

Skaffa en gratis licens

Du kan prova API utan utvärderingsbegränsningar genom att begära en gratis tillfällig licens.

Slutsats

I den här artikeln har du lärt dig hur du konverterar PostScript EPS/PS-filer till PNG- och JPG-bildformat med C++. Du har sett hela kodavsnittet tillsammans med stegen som krävs för att uppnå detta. Aspose.Page för C++ tillhandahåller många ytterligare funktioner som du kan utforska i detalj genom att besöka den officiella dokumentationen. Om du har några frågor är du välkommen att kontakta oss på vårt gratis supportforum.

Se även