รวมเอกสาร XPS เป็น PDF

โซลูชัน C++ API เพื่อรวมไฟล์ XPS หลายไฟล์

 

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

ที่นี่ คุณจะพบตัวอย่างโค้ดของวิธีใช้ API สำหรับการรวมไฟล์ XPS หากต้องการสำรวจว่าฟังก์ชันนี้สามารถรวมเข้ากับโซลูชันบนเว็บหรือใช้สำหรับการรวมไฟล์ออนไลน์ได้อย่างไร คุณสามารถลองใช้ข้ามแพลตฟอร์ม XPS Merger เครื่องมือ.

ในการรวมไฟล์ PS และ EPS คุณต้อง:

  • Aspose.Page สำหรับ C++ API ซึ่งเป็น API การจัดการและการแปลงเอกสารที่มีคุณลักษณะหลากหลาย ทรงพลัง และใช้งานง่ายสำหรับแพลตฟอร์ม C++

  • คุณสามารถดาวน์โหลดเวอร์ชันล่าสุดได้โดยตรง เพียงแค่เปิด NuGet package manager แล้วค้นหา Aspose.Page.Cpp และติดตั้ง คุณสามารถใช้คำสั่งต่อไปนี้จาก Package Manager Console

Package Manager Console Command


    PM> Install-Package Aspose.Page

ขั้นตอนในการรวมไฟล์ XPS หลายไฟล์เป็น PDF ด้วย C++

  1. กำหนดเส้นทางไปยังไดเร็กทอรีเอกสาร
  2. เริ่มต้นเอาต์พุต PDF และสตรีมอินพุตไฟล์ XPS
  3. สร้างอินสแตนซ์ของ XpsDocument จากสตรีมอินพุตที่สร้างไว้ก่อนหน้านี้
  4. เริ่มต้นวัตถุตัวเลือกด้วยพารามิเตอร์ TextCompression, ImageCompression, JpegQualityLevel สำหรับไฟล์เอาต์พุตโดยใช้ PdfSaveOptions ชั้น.
  5. ใช้คลาส PdfDevice สร้างอุปกรณ์แสดงผลสำหรับรูปแบบ PDF
  6. รวมไฟล์ XPS เพื่อส่งออกเอกสาร XPS

รหัส C ++ เพื่อรวม XPS เป็น PDF

    using Aspose::Page::XPS;
    using Aspose::Page::IO;
    using Aspose::Page::Presentation::Pdf;
    // Input file
    System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(RunExamples::outDir() + u"XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
    // Clearing resources under 'using' statement
    System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
    // ------------------------------------------
    try {
	    System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(RunExamples::dataDir() + u"input xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
	    // Clearing resources under 'using' statement
	    System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
	    // ------------------------------------------

	    try
	    {
		    // Load XPS document form the stream
		    System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
		    // or load XPS document directly from file. No xpsStream is needed then.
		    // XpsDocument document = new XpsDocument(inputFileName, new XpsLoadOptions());

		    // Initialize options object with necessary parameters.
		    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, 2, 6 })); return tmp_0; }();

		    // Create rendering device for PDF format
		    System::SharedPtr<Aspose::Page::Xps::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::Xps::Presentation::Pdf::PdfDevice>(pdfStream);

		    // Create an array of XPS files that will be merged with the first one
		    System::ArrayPtr<System::String> filesForMerge = System::MakeArray<System::String>({dataDir() + u"input2.xps", dataDir() + u"input3.xps"});

		    document->Merge(filesForMerge, device, options);
	    }
	    catch (...)
	    {
		    __dispose_guard_0.SetCurrentException(std::current_exception());
	    }
    }
    catch (...)
    {
	    __dispose_guard_1.SetCurrentException(std::current_exception());
    }

ขั้นตอนในการรวมไฟล์ XPS หลายไฟล์เป็นไฟล์เดียวด้วย C++

  1. เริ่มต้นเอาต์พุต XPS และสตรีมอินพุต
  2. สร้างอาร์เรย์ของไฟล์ XPS ที่จะรวมเข้ากับไฟล์แรก
  3. สร้างอินสแตนซ์ของ XpsDocument จากสตรีมอินพุตที่สร้างไว้ก่อนหน้านี้
  4. รวมไฟล์ XPS เพื่อส่งออกเอกสาร XPS

รหัส C ++ เพื่อรวม XPS เป็น XPS

    // Output stream
    System::SharedPtr<System::IO::Stream> outStream = System::IO::File::Open(RunExamples::outDir() + u"mergedXPSfiles.xps", System::IO::FileMode::Create, System::IO::FileAccess::Write);
    // Clearing resources under 'using' statement
    System::Details::DisposeGuard<1> __dispose_guard_1({ outStream });
    // ------------------------------------------
    try {
	    System::SharedPtr<System::IO::Stream> inStream = System::IO::File::Open(RunExamples::dataDir() + u"input.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
	    // Clearing resources under 'using' statement
	    System::Details::DisposeGuard<1> __dispose_guard_0({ inStream });
	    // ------------------------------------------

	    try
	    {
		    // Load XPS document form the stream
		    System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
		    // or load XPS document directly from file. No xpsStream is needed then.
		    // XpsDocument document = new XpsDocument(inputFileName, new XpsLoadOptions());

		    // Create an array of XPS files that will be merged with the first one
		    System::ArrayPtr<System::String> filesForMerge = System::MakeArray<System::String>({dataDir() + u"input2.xps", dataDir() + u"input3.xps"});

		    document->Merge(filesForMerge, outStream);
	    }
	    catch (...)
	    {
		    __dispose_guard_0.SetCurrentException(std::current_exception());
	    }
    }
    catch (...)
    {
	    __dispose_guard_1.SetCurrentException(std::current_exception());
    }

XPS XPS รูปแบบไฟล์คืออะไร

รูปแบบ XPS คล้ายกับรูปแบบ PDF ทั้งสองรูปแบบเป็นภาษาคำอธิบายหน้า (PDL) EPS อิงตาม HTML ไม่ใช่ภาษา PostScript ไฟล์ .eps สามารถใส่มาร์กอัปของโครงสร้างของเอกสารพร้อมกับข้อมูลเกี่ยวกับลักษณะของเอกสารได้ นอกจากนี้ยังมีคำแนะนำเพิ่มเติมเกี่ยวกับวิธีการพิมพ์และแสดงผลเอกสาร คุณสมบัติของรูปแบบคือ แก้ไขคำอธิบายของเอกสาร ซึ่งหมายความว่าจะมีลักษณะเหมือนกันไม่ว่าใครจะเปิดจากระบบปฏิบัติการใด