Převod souborů PostScript EPS nebo PS do běžných obrazových formátů je běžný úkol, který po vás může být požadováno. Pokud máte takových souborů velké množství, bude efektivnější je převést programově. Ve světle toho vás tento článek naučí, jak převést PostScriptové soubory EPS/PS do obrazového formátu PNG nebo JPG pomocí C++.

C++ API pro převod souborů PostScript EPS/PS na obrázky PNG nebo JPG

Aspose.Page for C++ je knihovna C++ pro vykreslování a manipulaci se soubory XPS a PostScript. Můžete jej použít ke zpracování a převodu souborů XPS a EPS/PS do několika dalších formátů, jako jsou PDF, JPEG, BMP, TIFF atd. Rozhraní API můžete nainstalovat buď prostřednictvím NuGet, nebo si jej stáhnout přímo ze sekce ke stažení.

PM> Install-Package Aspose.Page.Cpp

Převeďte PostScriptové soubory EPS/PS do obrazového formátu PNG pomocí C++

Níže jsou uvedeny kroky pro převod souborů EPS nebo PS do formátu obrázku PNG.

Následující ukázkový kód ukazuje, jak převést soubory PostScript EPS/PS do formátu obrázku PNG pomocí C++.

// Vytvořte instanci třídy ImageFormat
System::SharedPtr<System::Drawing::Imaging::ImageFormat> imageFormat = System::Drawing::Imaging::ImageFormat::get_Png();

// Inicializujte vstupní proud PostScript
System::SharedPtr<System::IO::FileStream> psStream = System::MakeObject<System::IO::FileStream>(u"SourceDirectory\\inputForImage.ps", System::IO::FileMode::Open, System::IO::FileAccess::Read);

// Vytvořte instanci třídy PsDocument
System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);

// Pokud chcete převést Postscriptový soubor i přes drobné chyby, nastavte tento příznak
bool suppressErrors = true;

// Inicializujte objekt ImageSaveOptions s nezbytnými parametry.
System::SharedPtr<Aspose::Page::EPS::Device::ImageSaveOptions> options = System::MakeObject<Aspose::Page::EPS::Device::ImageSaveOptions>(suppressErrors);

// Pokud chcete přidat speciální složku, kde jsou uložena písma. Výchozí složka písem v OS je vždy zahrnuta.
options->set_AdditionalFontsFolders(System::MakeArray<System::String>({ u"{FONT_FOLDER}" }));

// Výchozí formát obrázku je PNG a není povinné jej nastavovat v ImageDevice
// Výchozí velikost obrázku je 595x842 a není povinné ji nastavovat v ImageDevice
System::SharedPtr<Aspose::Page::EPS::Device::ImageDevice> device = System::MakeObject<Aspose::Page::EPS::Device::ImageDevice>();
// Pokud však potřebujete určit velikost a formát obrázku, použijte konstruktor s parametry
//Zařízení 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());
		{
			// Inicializujte výstupní proud
			System::SharedPtr<System::IO::FileStream> fs = System::MakeObject<System::IO::FileStream>(imagePath, System::IO::FileMode::Create, System::IO::FileAccess::Write);

			// Vymazání zdrojů pod příkazem 'používá se'
			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++;
	}
}

Převod souborů PostScript EPS/PS do obrazového formátu JPG pomocí C++

Chcete-li převést soubory EPS nebo PS na obrazový formát JPG, použijte níže uvedené kroky.

Následující ukázkový kód ukazuje, jak převést soubory PostScript EPS/PS do formátu obrázku JPG pomocí C++.

// Inicializujte vstupní proud PostScript
System::SharedPtr<System::IO::FileStream> psStream = System::MakeObject<System::IO::FileStream>(u"SourceDirectory\\inputForImage.ps", System::IO::FileMode::Open, System::IO::FileAccess::Read);

// Vytvořte instanci třídy PsDocument
System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);

// Pokud chcete převést Postscriptový soubor i přes drobné chyby, nastavte tento příznak
bool suppressErrors = true;

// Inicializujte objekt ImageSaveOptions s nezbytnými parametry.
System::SharedPtr<Aspose::Page::EPS::Device::ImageSaveOptions> options = System::MakeObject<Aspose::Page::EPS::Device::ImageSaveOptions>(suppressErrors);

// Pokud chcete přidat speciální složku, kde jsou uložena písma. Výchozí složka písem v OS je vždy zahrnuta.
options->set_AdditionalFontsFolders(System::MakeArray<System::String>({ u"{FONT_FOLDER}" }));

// Vytvořte instanci třídy ImageFormat
System::SharedPtr<System::Drawing::Imaging::ImageFormat> imageFormat = System::Drawing::Imaging::ImageFormat::get_Jpeg();

// Výchozí formát obrázku je PNG a není povinné jej nastavovat v ImageDevice
// Výchozí velikost obrázku je 595x842 a není povinné ji nastavovat v ImageDevice
System::SharedPtr<Aspose::Page::EPS::Device::ImageDevice> device = System::MakeObject<Aspose::Page::EPS::Device::ImageDevice>(imageFormat);
// Pokud však potřebujete určit velikost a formát obrázku, použijte konstruktor s parametry
//Zařízení 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());
		{
			// Inicializujte výstupní proud
			System::SharedPtr<System::IO::FileStream> fs = System::MakeObject<System::IO::FileStream>(imagePath, System::IO::FileMode::Create, System::IO::FileAccess::Write);

			// Vymazání zdrojů pod příkazem 'používá se'
			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++;
	}
}

Získejte bezplatnou licenci

Rozhraní API můžete vyzkoušet bez omezení hodnocení tím, že požádáte o bezplatnou dočasnou licenci.

Závěr

V tomto článku jste se naučili, jak převést soubory PostScript EPS/PS do obrazových formátů PNG a JPG pomocí C++. Viděli jste úplný úryvek kódu spolu s kroky potřebnými k dosažení tohoto cíle. Aspose.Page for C++ poskytuje mnoho dalších funkcí, které můžete podrobně prozkoumat na oficiální dokumentaci. V případě jakýchkoli dotazů nás neváhejte kontaktovat na našem bezplatném fóru podpory.

Viz také