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
- Konvertieren Sie PostScript-EPS/PS Dateien mit C++ in das PNG Bildformat
- Konvertieren von PostScript-EPS/PS Dateien in das JPG Bildformat mit C++
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.
- Initialisieren Sie den PostScript-Eingabestrom.
- Erstellen Sie mithilfe des Eingabestreams eine Instanz der Klasse PsDocument.
- Instanziieren Sie ein Objekt der Klasse ImageSaveOptions.
- Erstellen Sie eine Instanz der Klasse ImageDevice.
- Speichern Sie die PostScript Datei unter ImageDevice mit PsDocument->Save(System::SharedPtrAspose::Page::Device Gerät, System::SharedPtr Optionen) Methode.
- Rufen Sie die Bildbytes mit der methode ImageDevice->getImagesBytes() ab.
- Durchlaufen Sie die Bildbytes.
- Initialisieren Sie den Ausgabestream und speichern Sie das PNG Bild.
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.
- Initialisieren Sie den PostScript-Eingabestrom.
- Erstellen Sie mithilfe des Eingabestreams eine Instanz der Klasse PsDocument.
- Erstellen Sie eine Instanz der Klasse ImageSaveOptions.
- Instanziieren Sie ein Objekt der Klasse ImageFormat.
- Erstellen Sie mithilfe des Objekts ImageFormat eine Instanz der Klasse ImageDevice.
- Speichern Sie die PostScript Datei unter ImageDevice mit PsDocument->Save(System::SharedPtrAspose::Page::Device Gerät, System::SharedPtr Optionen) Methode.
- Rufen Sie die Bildbytes mit der methode ImageDevice->getImagesBytes() ab.
- Durchlaufen Sie die Bildbytes.
- Initialisieren Sie den Ausgabestream und speichern Sie das JPG Bild.
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.