Объединение файлов XPS | Aspose.Page для C++

Вы можете проверить качество слияния Aspose.Page XPS и просмотреть результаты с помощью бесплатного онлайн-сервиса XPS Merger

Объединение Aspose.Page C++ XPS позволяет объединять файлы XPS с документами XPS в Windows и Linux.
Чтобы выполнить слияние XPS, необходимо выполнить несколько шагов:

  1. Инициализируйте выходной поток для выходного документа XPS.
  2. Инициализируйте входной поток для первого входного документа XPS.
  3. Создайте массив файлов XPS, который будет объединен с первым.
  4. Создайте экземпляр XpsDocument из созданного ранее входного потока.
  5. Объедините файлы XPS с созданным документом и сохраните его.


В следующем фрагменте кода показано, как объединить файлы XPS в C++:

 1//For complete examples and data files, please go to 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 and Java.

Объединение Aspose.Page C++ XPS позволяет также объединять файлы 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//For complete examples and data files, please go to 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.