Konversi File XPS atau OXPS ke Format PDF menggunakan C++

Dokumen XPS dan OXPS menentukan tata letak, tampilan, dan informasi pencetakan. Dokumen-dokumen ini mirip dengan file PDF. Karena popularitas format PDF yang tinggi, Anda mungkin menemukan diri Anda dalam situasi di mana Anda perlu mengonversi dokumen XPS dan OXPS ke format PDF. Untuk itu, artikel ini akan mengajarkan Anda cara mengonversi dokumen XPS dan OXPS ke format PDF menggunakan C++.

C++ API untuk Mengonversi Dokumen XPS dan OXPS ke Format PDF

Aspose.Page for C++ adalah pustaka C++ untuk merender dan memanipulasi file XPS dan PostScript. Ini memungkinkan Anda membuat, membaca, dan memperbarui dokumen XPS. Selain itu, API mendukung konversi dokumen XPS dan OXPS ke format PDF. Anda dapat menginstal API melalui NuGet atau mengunduhnya langsung dari bagian unduhan.

PM> Install-Package Aspose.Page.Cpp

Konversikan Dokumen XPS/OXPS ke Format PDF

Berikut langkah-langkah untuk mengubah dokumen XPS dan OXPS ke format PDF.

Kode contoh berikut menunjukkan cara mengonversi dokumen XPS/OXPS ke format PDF menggunakan C++.

// Berkas keluaran
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Menghapus sumber daya di bawah pernyataan 'menggunakan'
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------------
try {
	// Sumber data
	System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
	// Menghapus sumber daya di bawah pernyataan 'menggunakan'
	System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
	// ------------------------------------------------

	try
	{
		// Muat dokumen XPS dari aliran
		System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
		// atau muat dokumen XPS langsung dari file. Tidak diperlukan xpsStream.
		// Dokumen XpsDocument = XpsDocument baru(inputFileName, XpsLoadOptions baru());

		// Inisialisasi objek PdfSaveOptions dengan parameter yang diperlukan.
		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;
		}();

		// Buat perangkat rendering untuk format PDF
		System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);

		// Simpan berkas PDF
		document->Save(device, options);
	}
	catch (...)
	{
		__dispose_guard_0.SetCurrentException(std::current_exception());
	}
}
catch (...)
{
	__dispose_guard_1.SetCurrentException(std::current_exception());
}
Gambar file PDF keluaran yang dihasilkan oleh kode sampel

Gambar file PDF keluaran yang dihasilkan oleh kode sampel

Ubah Halaman Terpilih dari Dokumen XPS/OXPS ke Format PDF

Saat mengonversi file XPS dan OXPS ke format PDF, Anda juga dapat menentukan halaman yang ingin Anda konversi. File PDF keluaran hanya akan berisi halaman yang Anda pilih. Untuk mencapai ini, silakan ikuti langkah-langkah yang diberikan di bawah ini.

Kode contoh berikut menunjukkan cara mengonversi halaman terpilih dari dokumen XPS dan OXPS ke format PDF menggunakan C++.

// Berkas keluaran
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// Menghapus sumber daya di bawah pernyataan 'menggunakan'
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------------
try {
	// Sumber data
	System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
	// Menghapus sumber daya di bawah pernyataan 'menggunakan'
	System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
	// ------------------------------------------------

	try
	{
		// Muat dokumen XPS dari aliran
		System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
		// atau muat dokumen XPS langsung dari file. Tidak diperlukan xpsStream.
		// Dokumen XpsDocument = XpsDocument baru(inputFileName, XpsLoadOptions baru());

		// Inisialisasi objek PdfSaveOptions dengan parameter yang diperlukan.
		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;
		}();

		// Buat perangkat rendering untuk format PDF
		System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);

		// Simpan berkas PDF
		document->Save(device, options);
	}
	catch (...)
	{
		__dispose_guard_0.SetCurrentException(std::current_exception());
	}
}
catch (...)
{
	__dispose_guard_1.SetCurrentException(std::current_exception());
}
Gambar file PDF keluaran yang dihasilkan oleh kode sampel

Gambar file PDF keluaran yang dihasilkan oleh kode sampel

Dapatkan Lisensi Gratis

Anda dapat mencoba API tanpa batasan evaluasi dengan meminta lisensi sementara gratis.

Kesimpulan

Pada artikel ini, Anda telah mempelajari cara mengonversi dokumen XPS dan OXPS ke format PDF menggunakan C++. Selain itu, Anda telah melihat cara mengonversi halaman terpilih dari dokumen XPS/OXPS ke format PDF menggunakan Aspose.Page for C++ API. API menyediakan banyak fitur tambahan untuk bekerja dengan dokumen XPS yang dapat Anda jelajahi secara mendetail dengan mengunjungi dokumentasi resmi. Jika ada pertanyaan, jangan ragu untuk menghubungi kami di forum dukungan gratis.

Lihat juga