Объединение файлов XPS | Aspose.Page для C++
Вы можете проверить качество слияния Aspose.Page XPS и просмотреть результаты с помощью бесплатного онлайн-сервиса XPS Merger
Объединение Aspose.Page C++ XPS позволяет объединять файлы XPS с документами XPS в Windows и Linux.
Чтобы выполнить слияние XPS, необходимо выполнить несколько шагов:
- Инициализируйте выходной поток для выходного документа XPS.
- Инициализируйте входной поток для первого входного документа XPS.
- Создайте массив файлов XPS, который будет объединен с первым.
- Создайте экземпляр XpsDocument из созданного ранее входного потока.
- Объедините файлы 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}
Объединение Aspose.Page C++ XPS позволяет также объединять файлы XPS в PDF-документы в Windows и Linux.
Для объединения XPS в PDF необходимо выполнить несколько шагов:
- Инициализируйте выходной поток для выходного PDF-документа.
- Инициализируйте входной поток для первого входного документа XPS.
- Создайте массив файлов XPS, который будет объединен с первым.
- Создайте экземпляр XpsDocument из созданного ранее входного потока.
- Укажите TextCompression, ImageCompression, JpegQualityLevel и другие параметры PdfSaveOptions.
- Создайте экземпляр PdfDevice из созданного ранее выходного потока.
- Объедините файлы 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}
Давайте рассмотрим PdfSaveOptions. Используя этот класс, мы можем назначать различные параметры преобразования при объединении XPS с PDF.
- JpegQualityLevel контролирует качество изображений в PDF-документе, если алгоритм ImageCompression — JPEG и может принимать значения от 0 до 100.
- Алгоритм ImageCompression, инкапсулированный в перечислении PdfImageCompression, может быть кодировкой длины прогона (RLE), Flate, Lempel-Ziv-Welch (LZW) с базовым или оптимизированным кодировщиком, JPEG, нет (байты необработанного изображения). и авто (наиболее подходящее сжатие для каждого изображения). По умолчанию установлено автоматическое сжатие.
- Алгоритм TextCompression, инкапсулированный в перечислении PdfTextCompression, может быть кодировкой длины (RLE), Flate, Lempel-Ziv-Welch (LZW) или нет. Значением по умолчанию при слиянии XPS с PDF является Flate.
- EncryptionDetails инкапсулировано в PdfEncryptionDetails. Он позволяет установить алгоритм шифрования, разрешения, пароли владельца и пользователя для PDF-документа.
- OutlineTreeExpansionLevel и OutlineTreeHeight управляют видом структуры документа.
Оцените слияние XPS онлайн на нашем XPS Merger.
Вы можете скачать примеры и файлы данных с GitHub.