Konwertuj pliki XPS lub OXPS do formatu PDF za pomocą C++

Dokumenty XPS i OXPS definiują układ, wygląd i informacje o drukowaniu. Dokumenty te są podobne do plików PDF. Ze względu na dużą popularność formatu PDF możesz znaleźć się w sytuacji, w której musisz przekonwertować dokumenty XPS i OXPS do formatu PDF. W tym celu w tym artykule dowiesz się, jak konwertować dokumenty XPS i OXPS do formatu PDF za pomocą C++.

C++ API do konwersji dokumentów XPS i OXPS do formatu PDF

Aspose.Page for C++ to biblioteka C++ do renderowania i manipulowania plikami XPS i PostScript. Pozwala tworzyć, czytać i aktualizować dokumenty XPS. Ponadto API obsługuje konwersję dokumentów XPS i OXPS do formatu PDF. Możesz zainstalować API przez NuGet lub pobrać bezpośrednio z sekcji downloads.

PM> Install-Package Aspose.Page.Cpp

Konwertuj dokumenty XPS/OXPS do formatu PDF

Poniżej przedstawiono kroki konwersji dokumentów XPS i OXPS do formatu PDF.

Poniższy przykładowy kod pokazuje, jak konwertować dokumenty XPS/OXPS do formatu PDF przy użyciu języka C++.

// Plik wyjściowy
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Czyszczenie zasobów w instrukcji „używanie”.
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------------------------------------
try {
	// Plik źródłowy
	System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
	// Czyszczenie zasobów w instrukcji „używanie”.
	System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
	// ------------------------------------------------------------------------

	try
	{
		// Załaduj dokument XPS ze strumienia
		System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
		// lub załaduj dokument XPS bezpośrednio z pliku. Wtedy nie jest potrzebny xpsStream.
		// Dokument XpsDocument = nowy XpsDocument(inputFileName, nowy XpsLoadOptions());

		// Zainicjuj obiekt PdfSaveOptions z niezbędnymi parametrami.
		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;
		}();

		// Utwórz urządzenie renderujące dla formatu PDF
		System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);

		// Zapisz plik PDF
		document->Save(device, options);
	}
	catch (...)
	{
		__dispose_guard_0.SetCurrentException(std::current_exception());
	}
}
catch (...)
{
	__dispose_guard_1.SetCurrentException(std::current_exception());
}
Obraz wyjściowego pliku PDF wygenerowanego przez przykładowy kod

Obraz wyjściowego pliku PDF wygenerowanego przez przykładowy kod

Konwertuj wybrane strony dokumentów XPS/OXPS do formatu PDF

Podczas konwertowania plików XPS i OXPS do formatu PDF możesz także określić strony, które chcesz przekonwertować. Wyjściowy plik PDF będzie zawierał tylko wybrane strony. Aby to osiągnąć, wykonaj czynności podane poniżej.

Poniższy przykładowy kod demonstruje, jak konwertować wybrane strony dokumentów XPS i OXPS do formatu PDF przy użyciu języka C++.

// Plik wyjściowy
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Czyszczenie zasobów w instrukcji „używanie”.
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------------------------------------
try {
	// Plik źródłowy
	System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
	// Czyszczenie zasobów w instrukcji „używanie”.
	System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
	// ------------------------------------------------------------------------

	try
	{
		// Załaduj dokument XPS ze strumienia
		System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
		// lub załaduj dokument XPS bezpośrednio z pliku. Wtedy nie jest potrzebny xpsStream.
		// Dokument XpsDocument = nowy XpsDocument(inputFileName, nowy XpsLoadOptions());

		// Zainicjuj obiekt PdfSaveOptions z niezbędnymi parametrami.
		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;
		}();

		// Utwórz urządzenie renderujące dla formatu PDF
		System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);

		// Zapisz plik PDF
		document->Save(device, options);
	}
	catch (...)
	{
		__dispose_guard_0.SetCurrentException(std::current_exception());
	}
}
catch (...)
{
	__dispose_guard_1.SetCurrentException(std::current_exception());
}
Obraz wyjściowego pliku PDF wygenerowanego przez przykładowy kod

Obraz wyjściowego pliku PDF wygenerowanego przez przykładowy kod

Uzyskaj bezpłatną licencję

Możesz wypróbować interfejs API bez ograniczeń ewaluacyjnych, prosząc o bezpłatną licencję tymczasową.

Wniosek

W tym artykule nauczyłeś się konwertować dokumenty XPS i OXPS do formatu PDF za pomocą C++. Dodatkowo widziałeś jak konwertować wybrane strony dokumentów XPS/OXPS do formatu PDF za pomocą Aspose.Page for C++ API. Interfejs API zapewnia wiele dodatkowych funkcji do pracy z dokumentami XPS, które można szczegółowo poznać, odwiedzając oficjalną dokumentację. W przypadku jakichkolwiek pytań skontaktuj się z nami na naszym darmowym forum wsparcia.

Zobacz też