Gabungkan dokumen XPS ke PDF

Solusi C++ API untuk menggabungkan beberapa file XPS

 

Format file XPS memungkinkan penyimpanan banyak dokumen dalam satu file dan juga dapat memuat banyak halaman. Solusi API Aspose.Page untuk C++ menawarkan kemampuan untuk menggabungkan beberapa file menjadi satu, menghasilkan file XPS atau PDF yang berisi konten gabungan dari semua file asli.

Di sini Anda akan menemukan contoh kode tentang cara menggunakan API untuk menggabungkan file XPS. Untuk mempelajari bagaimana fungsi ini dapat diintegrasikan ke dalam solusi web atau digunakan untuk penggabungan file online, Anda dapat mencoba lintas platform XPS Merger alat.

Untuk menggabungkan file PS dan EPS, Anda memerlukan:

  • Aspose.Page untuk C++ API yang kaya fitur, kuat, dan mudah digunakan untuk manipulasi dokumen dan API konversi untuk platform C++.

  • Anda dapat mengunduh versi terbarunya secara langsung, cukup buka pengelola paket NuGet, dan cari Aspose.Page.Cpp dan instal. Anda juga dapat menggunakan perintah berikut dari Package Manager Console.

Package Manager Console Command


    PM> Install-Package Aspose.Page

Langkah-langkah menggabungkan beberapa file XPS ke PDF dengan C++.

  1. Setel jalur ke direktori dokumen.
  2. Inisialisasi keluaran PDF dan aliran masukan file XPS.
  3. Buat instance XpsDocument dari aliran input yang dibuat sebelumnya.
  4. Inisialisasi objek opsi dengan parameter TextCompression, ImageCompression, JpegQualityLevel untuk file output melalui PdfSaveOptions Kelas.
  5. Menggunakan Kelas PdfDevice , buat perangkat rendering untuk format PDF.
  6. Gabungkan file XPS untuk menghasilkan dokumen XPS.

Kode C++ untuk menggabungkan XPS ke 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());
    }

Langkah-langkah untuk menggabungkan beberapa file XPS menjadi satu file dengan C++.

  1. Inisialisasi output XPS dan aliran input.
  2. Buat larik file XPS untuk digabungkan dengan yang pertama.
  3. Buat instance XpsDocument dari input stream yang dibuat sebelumnya.
  4. Gabungkan file XPS untuk menghasilkan dokumen XPS.

Kode C++ untuk menggabungkan XPS ke 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 Apa itu Format File XPS

Format XPS mirip dengan format PDF. Keduanya adalah format bahasa deskripsi halaman (PDL). EPS didasarkan pada HTML dan bukan pada bahasa PostScript. File .eps mampu memuat markup struktur dokumen bersama dengan informasi tentang bagaimana dokumen itu akan terlihat. Ada juga petunjuk tambahan tentang cara mencetak dan merender dokumen. Fitur formatnya adalah memperbaiki deskripsi dokumen yang berarti akan terlihat sama tidak peduli siapa dan dari sistem operasional apa yang membukanya.