Konvertieren Sie XPS oder OXPS Dateien mit C++ in das PDF-Format

XPS und OXPS Dokumente definieren das Layout, das Erscheinungsbild und die Druckinformationen. Diese Dokumente ähneln PDF Dateien. Aufgrund der großen Beliebtheit des PDF-Formats finden Sie sich möglicherweise in Situationen wieder, in denen Sie XPS und OXPS Dokumente in das PDF Format konvertieren müssen. Zu diesem Zweck lernen Sie in diesem Artikel, wie Sie XPS und OXPS Dokumente mit C++ in das PDF Format konvertieren.

C++-API zum Konvertieren von XPS und OXPS Dokumenten in das PDF 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 das PDF-Format. 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 PDF Format

Im Folgenden finden Sie die Schritte zum Konvertieren von XPS und OXPS Dokumenten in das PDF-Format.

Der folgende Beispielcode zeigt, wie XPS/OXPS Dokumente mit C++ in das PDF Format konvertiert werden.

// Ausgabedatei
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Löschen von Ressourcen unter der 'using'-Anweisung
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------
try {
	// Quelldatei
	System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
	// Löschen von Ressourcen unter der 'using'-Anweisung
	System::Details::DisposeGuard<1> __dispose_guard_0({ 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 PdfSaveOptions objekt mit den erforderlichen Parametern.
		System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfSaveOptions> options = [&] {
			auto tmp_0 = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfSaveOptions>();
			tmp_0->set_JpegQualityLevel(100);
			tmp_0->set_ImageCompression(Aspose::Page::XPS::Presentation::Pdf::PdfImageCompression::Jpeg);
			tmp_0->set_TextCompression(Aspose::Page::XPS::Presentation::Pdf::PdfTextCompression::Flate);
			return tmp_0;
		}();

		// Erstellen Sie ein Rendering-Gerät für das PDF-Format
		System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);

		// PDF Datei speichern
		document->Save(device, options);
	}
	catch (...)
	{
		__dispose_guard_0.SetCurrentException(std::current_exception());
	}
}
catch (...)
{
	__dispose_guard_1.SetCurrentException(std::current_exception());
}
Bild der vom Beispielcode generierten PDF-Ausgabedatei

Bild der vom Beispielcode generierten PDF-Ausgabedatei

Konvertieren Sie ausgewählte Seiten von XPS/OXPS Dokumenten in das PDF Format

Beim Konvertieren von XPS und OXPS Dateien in das PDF Format können Sie auch die Seiten angeben, die Sie konvertieren möchten. Die PDF-Ausgabedatei enthält nur die von Ihnen ausgewählten Seiten. Um dies zu erreichen, folgen Sie bitte den unten angegebenen Schritten.

Der folgende Beispielcode zeigt, wie ausgewählte Seiten von XPS und OXPS Dokumenten mit C++ in das PDF Format konvertiert werden.

// Ausgabedatei
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Löschen von Ressourcen unter der 'using'-Anweisung
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------
try {
	// Quelldatei
	System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
	// Löschen von Ressourcen unter der 'using'-Anweisung
	System::Details::DisposeGuard<1> __dispose_guard_0({ 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 PdfSaveOptions objekt mit den erforderlichen Parametern.
		System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfSaveOptions> options = [&] {
			auto tmp_0 = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfSaveOptions>();
			tmp_0->set_JpegQualityLevel(100);
			tmp_0->set_ImageCompression(Aspose::Page::XPS::Presentation::Pdf::PdfImageCompression::Jpeg);
			tmp_0->set_TextCompression(Aspose::Page::XPS::Presentation::Pdf::PdfTextCompression::Flate);
			tmp_0->set_PageNumbers(System::MakeArray<int32_t>({ 1, 3 }));
			return tmp_0;
		}();

		// Erstellen Sie ein Rendering-Gerät für das PDF-Format
		System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);

		// PDF Datei speichern
		document->Save(device, options);
	}
	catch (...)
	{
		__dispose_guard_0.SetCurrentException(std::current_exception());
	}
}
catch (...)
{
	__dispose_guard_1.SetCurrentException(std::current_exception());
}
Bild der vom Beispielcode generierten PDF-Ausgabedatei

Bild der vom Beispielcode generierten PDF-Ausgabedatei

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 das PDF Format konvertieren. Außerdem haben Sie gesehen, wie Sie ausgewählte Seiten der XPS/OXPS Dokumente mit Aspose.Page für die C++-API in das PDF Format konvertieren. Die API bietet viele zusätzliche Funktionen für die Arbeit mit XPS Dokumenten, 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