Об’єднати файли XPS | Aspose.Page для C++

Ви можете перевірити якість об’єднання Aspose.Page XPS і переглянути результати за допомогою безкоштовного онлайнового XPS Merger

Aspose.Page C++ XPS merger дозволяє об’єднувати XPS-файли з XPS-документом у Windows і Linux.
Для злиття XPS необхідно виконати кілька кроків:

  1. Ініціалізуйте вихідний потік для вихідного документа XPS.
  2. Ініціалізуйте вхідний потік для першого вхідного документа XPS.
  3. Створіть масив файлів XPS, який буде об’єднано з першим.
  4. Створіть екземпляр XpsDocument із створеного раніше вхідного потоку.
  5. Об’єднайте файли XPS із створеним документом і збережіть його.


Наведений нижче фрагмент коду показує, як об’єднати файли XPS у C++:

 1//Повні приклади і файли даних див https://github.com/aspose-page/Aspose.Page-for-C
 2// Output stream
 3System::SharedPtr<System::IO::Stream> outStream = System::IO::File::Open(RunExamples::outDir() + u"mergedXPSfiles.xps", System::IO::FileMode::Create, System::IO::FileAccess::Write);
 4// Clearing resources under 'using' statement
 5System::Details::DisposeGuard<1> __dispose_guard_1({ outStream });
 6// ------------------------------------------
 7try {
 8	System::SharedPtr<System::IO::Stream> inStream = System::IO::File::Open(RunExamples::dataDir() + u"input.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
 9	// Clearing resources under 'using' statement
10	System::Details::DisposeGuard<1> __dispose_guard_0({ inStream });
11	// ------------------------------------------
12
13	try
14	{
15		// Load XPS document form the stream
16		System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
17		// or load XPS document directly from file. No xpsStream is needed then.
18		// XpsDocument document = new XpsDocument(inputFileName, new XpsLoadOptions());
19
20		// Create an array of XPS files that will be merged with the first one
21		System::ArrayPtr<System::String> filesForMerge = System::MakeArray<System::String>({dataDir() + u"input2.xps", dataDir() + u"input3.xps"});
22
23		document->Merge(filesForMerge, outStream);
24	}
25	catch (...)
26	{
27		__dispose_guard_0.SetCurrentException(std::current_exception());
28	}
29}
30catch (...)
31{
32	__dispose_guard_1.SetCurrentException(std::current_exception());
33}

Перегляньте об’єднання XPS .Net і Java.

Aspose.Page C++ XPS merger також дозволяє об’єднувати XPS-файли в PDF-документ у Windows і Linux.
Щоб виконати злиття XPS у PDF, необхідно виконати кілька кроків:

  1. Ініціалізуйте вихідний потік для вихідного документа PDF.
  2. Ініціалізуйте вхідний потік для першого вхідного документа XPS.
  3. Створіть масив файлів XPS, який буде об’єднано з першим.
  4. Створіть екземпляр XpsDocument із створеного раніше вхідного потоку.
  5. Укажіть TextCompressionImageCompressionJpegQualityLevel та інші параметри PdfSaveOptions.
  6. Створіть екземпляр PdfDevice із створеного раніше вихідного потоку.
  7. Об’єднайте файли XPS із створеним документом і збережіть його як PDF із параметрами збереження PDF.


Наведений нижче фрагмент коду показує, як об’єднати файли XPS із документом PDF у C++:

 1//Повні приклади і файли даних див https://github.com/aspose-page/Aspose.Page-for-C
 2// Input file
 3System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(RunExamples::outDir() + u"XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
 4// Clearing resources under 'using' statement
 5System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
 6// ------------------------------------------
 7try {
 8	System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(RunExamples::dataDir() + u"input.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
 9	// Clearing resources under 'using' statement
10	System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
11	// ------------------------------------------
12
13	try
14	{
15		// Load XPS document form the stream
16		System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
17		// or load XPS document directly from file. No xpsStream is needed then.
18		// XpsDocument document = new XpsDocument(inputFileName, new XpsLoadOptions());
19
20		// Initialize options object with necessary parameters.
21		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; }();
22
23		// Create rendering device for PDF format
24		System::SharedPtr<Aspose::Page::Xps::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::Xps::Presentation::Pdf::PdfDevice>(pdfStream);
25
26		// Create an array of XPS files that will be merged with the first one
27		System::ArrayPtr<System::String> filesForMerge = System::MakeArray<System::String>({dataDir() + u"input2.xps", dataDir() + u"input3.xps"});
28
29		document->Merge(filesForMerge, device, options);
30	}
31	catch (...)
32	{
33		__dispose_guard_0.SetCurrentException(std::current_exception());
34	}
35}
36catch (...)
37{
38	__dispose_guard_1.SetCurrentException(std::current_exception());
39}

Перегляньте об’єднання XPS .Net і Java.

Давайте розглянемо PdfSaveOptions. Використовуючи цей клас, ми можемо призначати різні параметри перетворення під час об’єднання XPS у PDF.

Оцініть злиття XPS онлайн на прикладі XPS Merger.

Ви можете завантажити приклади та файли даних із GitHub.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.