Das Konvertieren von PostScript EPS oder PS Dateien in reguläre Bildformate ist eine häufige Aufgabe, die Sie möglicherweise ausführen müssen. Wenn Sie über eine große Anzahl solcher Dateien verfügen, ist es effizienter, sie programmgesteuert zu konvertieren. Vor diesem Hintergrund erfahren Sie in diesem Artikel, wie Sie PostScript-EPS/PS Dateien mit C++ in das PNG oder JPG Bildformat konvertieren.

C++-API zum Konvertieren von PostScript-EPS/PS Dateien in PNG oder JPG Bilder

Aspose.Page for C++ ist eine C++ Bibliothek zum Rendern und Bearbeiten von XPS und PostScript Dateien. Sie können damit XPS und EPS/PS Dateien verarbeiten und in mehrere andere Formate wie PDF, JPEG, BMP, TIFF usw. konvertieren. Sie können die API entweder über NuGet installieren oder direkt aus dem Abschnitt Downloads herunterladen.

PM> Install-Package Aspose.Page.Cpp

Konvertieren Sie PostScript-EPS/PS Dateien mit C++ in das PNG Bildformat

Im Folgenden finden Sie die Schritte zum Konvertieren von EPS oder PS Dateien in das PNG Bildformat.

Der folgende Beispielcode zeigt, wie PostScript-EPS/PS Dateien mithilfe von C++ in das PNG Bildformat konvertiert werden.

// Erstellen Sie eine Instanz der ImageFormat Klasse
System::SharedPtr<System::Drawing::Imaging::ImageFormat> imageFormat = System::Drawing::Imaging::ImageFormat::get_Png();

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

// Erstellen Sie eine Instanz der PsDocument Klasse
System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);

// Wenn Sie die Postscript Datei trotz geringfügiger Fehler konvertieren möchten, setzen Sie dieses Flag
bool suppressErrors = true;

// Initialisieren Sie das ImageSaveOptions objekt mit den erforderlichen Parametern.
System::SharedPtr<Aspose::Page::EPS::Device::ImageSaveOptions> options = System::MakeObject<Aspose::Page::EPS::Device::ImageSaveOptions>(suppressErrors);

// Wenn Sie einen speziellen Ordner hinzufügen möchten, in dem Schriftarten gespeichert sind. Der Standardordner für Schriftarten im Betriebssystem ist immer enthalten.
options->set_AdditionalFontsFolders(System::MakeArray<System::String>({ u"{FONT_FOLDER}" }));

// Das Standardbildformat ist PNG und es ist nicht zwingend erforderlich, es in ImageDevice festzulegen
// Die Standardbildgröße ist 595 x 842 und es ist nicht zwingend erforderlich, sie in ImageDevice festzulegen
System::SharedPtr<Aspose::Page::EPS::Device::ImageDevice> device = System::MakeObject<Aspose::Page::EPS::Device::ImageDevice>();
// Wenn Sie jedoch Größe und Bildformat angeben müssen, verwenden Sie den Konstruktor mit Parametern
//ImageDevice-Gerät = neues ImageDevice (neues 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());
		{
			// Ausgangsstrom initialisieren
			System::SharedPtr<System::IO::FileStream> fs = System::MakeObject<System::IO::FileStream>(imagePath, System::IO::FileMode::Create, System::IO::FileAccess::Write);

			// Löschen von Ressourcen unter der 'using'-Anweisung
			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++;
	}
}

Konvertieren von PostScript-EPS/PS Dateien in das JPG Bildformat mit C++

Führen Sie die folgenden Schritte aus, um EPS oder PS Dateien in das JPG Bildformat zu konvertieren.

Der folgende Beispielcode veranschaulicht, wie PostScript-EPS/PS Dateien mithilfe von C++ in das JPG Bildformat konvertiert werden.

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

// Erstellen Sie eine Instanz der PsDocument Klasse
System::SharedPtr<PsDocument> document = System::MakeObject<PsDocument>(psStream);

// Wenn Sie die Postscript Datei trotz geringfügiger Fehler konvertieren möchten, setzen Sie dieses Flag
bool suppressErrors = true;

// Initialisieren Sie das ImageSaveOptions objekt mit den erforderlichen Parametern.
System::SharedPtr<Aspose::Page::EPS::Device::ImageSaveOptions> options = System::MakeObject<Aspose::Page::EPS::Device::ImageSaveOptions>(suppressErrors);

// Wenn Sie einen speziellen Ordner hinzufügen möchten, in dem Schriftarten gespeichert sind. Der Standardordner für Schriftarten im Betriebssystem ist immer enthalten.
options->set_AdditionalFontsFolders(System::MakeArray<System::String>({ u"{FONT_FOLDER}" }));

// Erstellen Sie eine Instanz der ImageFormat Klasse
System::SharedPtr<System::Drawing::Imaging::ImageFormat> imageFormat = System::Drawing::Imaging::ImageFormat::get_Jpeg();

// Das Standardbildformat ist PNG und es ist nicht zwingend erforderlich, es in ImageDevice festzulegen
// Die Standardbildgröße ist 595 x 842 und es ist nicht zwingend erforderlich, sie in ImageDevice festzulegen
System::SharedPtr<Aspose::Page::EPS::Device::ImageDevice> device = System::MakeObject<Aspose::Page::EPS::Device::ImageDevice>(imageFormat);
// Wenn Sie jedoch Größe und Bildformat angeben müssen, verwenden Sie den Konstruktor mit Parametern
//ImageDevice-Gerät = neues ImageDevice (neues 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());
		{
			// Ausgangsstrom initialisieren
			System::SharedPtr<System::IO::FileStream> fs = System::MakeObject<System::IO::FileStream>(imagePath, System::IO::FileMode::Create, System::IO::FileAccess::Write);

			// Löschen von Ressourcen unter der 'using'-Anweisung
			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++;
	}
}

Holen Sie sich eine kostenlose Lizenz

Sie können die API ohne Evaluierungseinschränkungen testen, indem Sie eine kostenlose temporäre Lizenz anfordern.

Fazit

In diesem Artikel haben Sie gelernt, wie Sie PostScript-EPS/PS Dateien mit C++ in PNG und JPG Bildformate konvertieren. Sie haben das vollständige code snippet zusammen mit den dafür erforderlichen Schritten gesehen. Aspose.Page for C++ bietet viele zusätzliche Funktionen, die Sie im Detail erkunden können, indem Sie die offizielle Dokumentation besuchen. Bei Fragen können Sie uns gerne in unserem kostenlosen Support-Forum erreichen.

Siehe auch