XPS und OXPS Dokumente ähneln PDF Dateien und definieren das Layout, das Aussehen und die Druckinformationen für ein Dokument. Es kann Szenarien geben, in denen Sie XPS und OXPS Dokumente in die Bildformate JPG und PNG konvertieren müssen. Zu diesem Zweck lernen Sie in diesem Artikel, wie Sie XPS und OXPS Dokumente mit C++ in das JPG und PNG Bildformat konvertieren.
- C++-API zum Konvertieren von XPS, OXPS Dateien in das JPG oder PNG-Format
- Konvertieren Sie XPS/OXPS Dokumente in das JPG-Format
- Konvertieren Sie XPS/OXPS Dokumente in das PNG-Format
C++-API zum Konvertieren von XPS, OXPS Dateien in das JPG oder PNG Format
Aspose.Page for C++ ist eine C++ Bibliothek zum Rendern und Bearbeiten von XPS und PostScript Dateien. Damit können Sie XPS Dokumente erstellen, lesen und aktualisieren. Darüber hinaus unterstützt die API die Konvertierung von XPS und OXPS Dokumenten in JPG und PNG Bildformate. Sie können die API entweder über NuGet installieren oder direkt aus dem Abschnitt downloads herunterladen.
PM> Install-Package Aspose.Page.Cpp
Konvertieren Sie XPS/OXPS Dokumente in das JPG Format
Im Folgenden finden Sie die Schritte zum Konvertieren von XPS und OXPS Dokumenten in das JPG-Format.
- Initialisieren Sie einen Stream mit der Quell-XPS/OXPS Datei.
- Erstellen Sie mithilfe des XPS/OXPS-Streams eine Instanz der Klasse XpsDocument.
- Erstellen Sie eine Instanz der Klasse JpegSaveOptions.
- Legen Sie Optionen wie SmoothingMode und Resolution fest.
- Erstellen Sie eine Instanz der Klasse ImageDevice.
- Speichern Sie das XPS/OXPS-Dokument unter ImageDevice mit XpsDocument->Save(System::SharedPtr Gerät, System::SharedPtr Optionen) Methode.
- Iterieren Sie durch die Dokumentpartitionen.
- Initialisieren Sie den Ausgabestream und speichern Sie die JPG Bilder.
Der folgende Beispielcode zeigt, wie XPS/OXPS Dokumente mit C++ in das JPG Format konvertiert werden.
// Eingabedatei
System::String inputFileName = u"SourceDirectory\\sample.xps";
//Ausgabedatei
System::String outputFileName = u"OutputDirectory\\XPStoImage_out.jpeg";
// XPS-Eingabestream initialisieren
{
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(inputFileName, System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Löschen von Ressourcen unter der 'using'-Anweisung
System::Details::DisposeGuard<1> __dispose_guard_1({ xpsStream });
// ------------------------------------------
try
{
// XPS-Dokument aus dem Stream laden
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// oder XPS-Dokument direkt aus Datei laden. Dann wird kein xpsStream benötigt.
// XpsDocument document = new XpsDocument(inputFileName, new XpsLoadOptions());
// Initialisieren Sie das JpegSaveOptions objekt mit den erforderlichen Parametern.
System::SharedPtr<JpegSaveOptions> options = [&] {
auto tmp_0 = System::MakeObject<JpegSaveOptions>();
tmp_0->set_SmoothingMode(System::Drawing::Drawing2D::SmoothingMode::HighQuality);
tmp_0->set_Resolution(300);
tmp_0->set_PageNumbers(System::MakeArray<int32_t>({ 1, 2, 6 }));
return tmp_0;
}();
// Erstellen Sie ein Rendering-Gerät für das JPG-Format
System::SharedPtr<ImageDevice> device = System::MakeObject<ImageDevice>();
document->Save(device, options);
// Dokumentpartitionen durchlaufen (feste Dokumente in XPS-Begriffen)
for (int32_t i = 0; i < device->get_Result()->get_Length(); i++)
{
for (int32_t j = 0; j < device->get_Result()[i]->get_Length(); j++)
{
// Bildausgabestrom initialisieren
{
System::SharedPtr<System::IO::Stream> imageStream = System::IO::File::Open(System::IO::Path::GetDirectoryName(outputFileName) + u"\\" + System::IO::Path::GetFileNameWithoutExtension(outputFileName) + u"_" + (i + 1) + u"_" + (j + 1) + System::IO::Path::GetExtension(outputFileName), System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Löschen von Ressourcen unter der 'using'-Anweisung
System::Details::DisposeGuard<1> __dispose_guard_0({ imageStream });
// ------------------------------------------
try
{
imageStream->Write(device->get_Result()[i][j], 0, device->get_Result()[i][j]->get_Length());
}
catch (...)
{
__dispose_guard_0.SetCurrentException(std::current_exception());
}
}
}
}
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
}
Konvertieren Sie XPS/OXPS Dokumente in das PNG Format
Im Folgenden sind die Schritte zum Konvertieren von XPS und OXPS Dokumenten in das PNG Format aufgeführt.
- Initialisieren Sie einen Stream mit der Quell-XPS/OXPS Datei.
- Erstellen Sie mithilfe des XPS/OXPS-Streams eine Instanz der Klasse XpsDocument.
- Erstellen Sie eine Instanz der Klasse PngSaveOptions.
- Legen Sie Optionen wie SmoothingMode und Resolution fest.
- Erstellen Sie eine Instanz der Klasse ImageDevice.
- Speichern Sie das XPS/OXPS-Dokument unter ImageDevice mit XpsDocument->Save(System::SharedPtr Gerät, System::SharedPtr Optionen) Methode.
- Iterieren Sie durch die Dokumentpartitionen.
- Initialisieren Sie den Ausgabestream und speichern Sie die PNG Bilder.
Der folgende Beispielcode zeigt, wie XPS/OXPS Dokumente mit C++ in das PNG Format konvertiert werden.
// Eingabedatei
System::String inputFileName = u"SourceDirectory\\sample.xps";
//Ausgabedatei
System::String outputFileName = u"OutputDirectory\\XPStoImage_out.png";
// XPS-Eingabestream initialisieren
{
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(inputFileName, System::IO::FileMode::Open, System::IO::FileAccess::Read);
// Löschen von Ressourcen unter der 'using'-Anweisung
System::Details::DisposeGuard<1> __dispose_guard_1({ xpsStream });
// ------------------------------------------
try
{
// XPS-Dokument aus dem Stream laden
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// oder XPS-Dokument direkt aus Datei laden. Dann wird kein xpsStream benötigt.
// XpsDocument document = new XpsDocument(inputFileName, new XpsLoadOptions());
// Initialisieren Sie das PngSaveOptions objekt mit den erforderlichen Parametern.
System::SharedPtr<PngSaveOptions> options = [&] {
auto tmp_0 = System::MakeObject<PngSaveOptions>();
tmp_0->set_SmoothingMode(System::Drawing::Drawing2D::SmoothingMode::HighQuality);
tmp_0->set_Resolution(300);
tmp_0->set_PageNumbers(System::MakeArray<int32_t>({ 1, 2, 6 }));
return tmp_0;
}();
// Erstellen Sie ein Rendering-Gerät für das PNG-Format
System::SharedPtr<ImageDevice> device = System::MakeObject<ImageDevice>();
document->Save(device, options);
// Dokumentpartitionen durchlaufen (feste Dokumente in XPS-Begriffen)
for (int32_t i = 0; i < device->get_Result()->get_Length(); i++)
{
for (int32_t j = 0; j < device->get_Result()[i]->get_Length(); j++)
{
// Bildausgabestrom initialisieren
{
System::SharedPtr<System::IO::Stream> imageStream = System::IO::File::Open(System::IO::Path::GetDirectoryName(outputFileName) + u"\\" + System::IO::Path::GetFileNameWithoutExtension(outputFileName) + u"_" + (i + 1) + u"_" + (j + 1) + System::IO::Path::GetExtension(outputFileName), System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Löschen von Ressourcen unter der 'using'-Anweisung
System::Details::DisposeGuard<1> __dispose_guard_0({ imageStream });
// ------------------------------------------
try
{
imageStream->Write(device->get_Result()[i][j], 0, device->get_Result()[i][j]->get_Length());
}
catch (...)
{
__dispose_guard_0.SetCurrentException(std::current_exception());
}
}
}
}
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
}
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 XPS und OXPS Dokumente mit C++ in JPG und PNG Bildformate konvertieren. Darüber hinaus bietet Aspose.Page für die C++-API verschiedene zusätzliche Formate, die Sie verwenden können. Sie können die API im Detail erkunden, indem Sie die offizielle Dokumentation besuchen. Bei Fragen können Sie sich gerne in unserem kostenlosen Support-Forum an uns wenden.