แปลงไฟล์ XPS หรือ OXPS เป็นรูปแบบ PDF โดยใช้ C++

เอกสาร XPS และ OXPS จะกำหนดเค้าโครง ลักษณะที่ปรากฏ และข้อมูลการพิมพ์ เอกสารเหล่านี้คล้ายกับไฟล์ PDF เนื่องจากรูปแบบ PDF ได้รับความนิยมอย่างสูง คุณอาจพบว่าตัวเองอยู่ในสถานการณ์ที่ต้องแปลงเอกสาร XPS และ OXPS เป็นรูปแบบ PDF ด้วยเหตุนี้ บทความนี้จะสอนวิธีแปลงเอกสาร XPS และ OXPS เป็นรูปแบบ PDF โดยใช้ C++

C ++ API สำหรับการแปลงเอกสาร XPS และ OXPS เป็นรูปแบบ PDF

Aspose.Page for C++ คือไลบรารี C++ สำหรับแสดงผลและจัดการไฟล์ XPS และ PostScript ช่วยให้คุณสร้าง อ่าน และอัปเดตเอกสาร XPS นอกจากนี้ API ยังรองรับการแปลงเอกสาร XPS และ OXPS เป็นรูปแบบ PDF คุณสามารถติดตั้ง API ผ่าน NuGet หรือดาวน์โหลดโดยตรงจากส่วน ดาวน์โหลด

PM> Install-Package Aspose.Page.Cpp

แปลงเอกสาร XPS/OXPS เป็นรูปแบบ PDF

ต่อไปนี้เป็นขั้นตอนในการแปลงเอกสาร XPS และ OXPS เป็นรูปแบบ PDF

โค้ดตัวอย่างต่อไปนี้แสดงวิธีการแปลงเอกสาร XPS/OXPS เป็นรูปแบบ PDF โดยใช้ C++

// ไฟล์เอาต์พุต
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// การล้างทรัพยากรภายใต้คำสั่ง 'ใช้'
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------
try {
	// ไฟล์ต้นฉบับ
	System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
	// การล้างทรัพยากรภายใต้คำสั่ง 'ใช้'
	System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
	// ------------------------------------------

	try
	{
		// โหลดเอกสาร XPS จากสตรีม
		System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
		// หรือโหลดเอกสาร XPS โดยตรงจากไฟล์ ไม่จำเป็นต้องใช้ xpsStream
		// เอกสาร XpsDocument = XpsDocument ใหม่ (inputFileName, XpsLoadOptions ใหม่ ());

		// เริ่มต้นวัตถุ PdfSaveOptions ด้วยพารามิเตอร์ที่จำเป็น
		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;
		}();

		// สร้างอุปกรณ์แสดงผลสำหรับรูปแบบ PDF
		System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);

		// บันทึกไฟล์ PDF
		document->Save(device, options);
	}
	catch (...)
	{
		__dispose_guard_0.SetCurrentException(std::current_exception());
	}
}
catch (...)
{
	__dispose_guard_1.SetCurrentException(std::current_exception());
}
รูปภาพของไฟล์ PDF เอาต์พุตที่สร้างโดยโค้ดตัวอย่าง

รูปภาพของไฟล์ PDF เอาต์พุตที่สร้างโดยโค้ดตัวอย่าง

แปลงหน้าที่เลือกของเอกสาร XPS/OXPS เป็นรูปแบบ PDF

ขณะแปลงไฟล์ XPS และ OXPS เป็นรูปแบบ PDF คุณยังสามารถระบุหน้าที่คุณต้องการแปลงได้อีกด้วย ไฟล์ PDF ที่ส่งออกจะมีเฉพาะหน้าที่คุณเลือกเท่านั้น เพื่อให้บรรลุเป้าหมายนี้ โปรดปฏิบัติตามขั้นตอนด้านล่าง

โค้ดตัวอย่างต่อไปนี้สาธิตวิธีแปลงหน้าที่เลือกของเอกสาร XPS และ OXPS เป็นรูปแบบ PDF โดยใช้ C++

// ไฟล์เอาต์พุต
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// การล้างทรัพยากรภายใต้คำสั่ง 'ใช้'
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------
try {
	// ไฟล์ต้นฉบับ
	System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
	// การล้างทรัพยากรภายใต้คำสั่ง 'ใช้'
	System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
	// ------------------------------------------

	try
	{
		// โหลดเอกสาร XPS จากสตรีม
		System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
		// หรือโหลดเอกสาร XPS โดยตรงจากไฟล์ ไม่จำเป็นต้องใช้ xpsStream
		// เอกสาร XpsDocument = XpsDocument ใหม่ (inputFileName, XpsLoadOptions ใหม่ ());

		// เริ่มต้นวัตถุ PdfSaveOptions ด้วยพารามิเตอร์ที่จำเป็น
		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;
		}();

		// สร้างอุปกรณ์แสดงผลสำหรับรูปแบบ PDF
		System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);

		// บันทึกไฟล์ PDF
		document->Save(device, options);
	}
	catch (...)
	{
		__dispose_guard_0.SetCurrentException(std::current_exception());
	}
}
catch (...)
{
	__dispose_guard_1.SetCurrentException(std::current_exception());
}
รูปภาพของไฟล์ PDF เอาต์พุตที่สร้างโดยโค้ดตัวอย่าง

รูปภาพของไฟล์ PDF เอาต์พุตที่สร้างโดยโค้ดตัวอย่าง

รับใบอนุญาตฟรี

คุณสามารถลองใช้ API ได้โดยไม่มีข้อจำกัดในการประเมินโดยขอ ใบอนุญาตชั่วคราวฟรี

บทสรุป

ในบทความนี้ คุณได้เรียนรู้วิธีแปลงเอกสาร XPS และ OXPS เป็นรูปแบบ PDF โดยใช้ C++ นอกจากนี้ คุณได้เห็นวิธีแปลงหน้าที่เลือกของเอกสาร XPS/OXPS เป็นรูปแบบ PDF โดยใช้ Aspose.Page for C++ API API มีคุณสมบัติเพิ่มเติมมากมายสำหรับการทำงานกับเอกสาร XPS ซึ่งคุณสามารถสำรวจโดยละเอียดได้โดยไปที่ เอกสารอย่างเป็นทางการ ในกรณีที่มีคำถามใดๆ โปรดติดต่อเราได้ที่ ฟอรัมสนับสนุนฟรี

ดูสิ่งนี้ด้วย