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