دمج مستندات XPS في PDF

حل C++ API لدمج العديد من ملفات XPS

 

يسمح تنسيق ملف XPS بتخزين مستندات متعددة داخل ملف واحد ويمكن أيضًا أن يحتوي على صفحات متعددة. يوفر Aspose.Page API Solution for C++ القدرة على دمج ملفات متعددة في ملف واحد ، مما ينتج عنه ملف XPS أو PDF يحتوي على المحتوى المدمج لجميع الملفات الأصلية.

ستجد هنا مثالاً رمزًا لكيفية استخدام واجهة برمجة التطبيقات لدمج ملفات XPS. لاستكشاف كيفية دمج هذه الوظيفة في أحد حلول الويب أو استخدامها لدمج الملفات عبر الإنترنت ، يمكنك تجربة النظام الأساسي المشترك XPS Merger أداة.

لدمج ملفات PS و EPS ، تحتاج إلى:

  • Aspose.Page لـ C++ API وهي واجهة برمجة تطبيقات لمعالجة المستندات وتحويلها غنية بالميزات وقوية وسهلة الاستخدام لمنصة C++.

  • يمكنك تنزيل أحدث إصدار له مباشرةً ، فقط افتح مدير حزمة NuGet ، وابحث عن Aspose.Page.Cpp وتثبيته. يمكنك أيضًا استخدام الأمر التالي من Package Manager Console.

Package Manager Console Command


    PM> Install-Package Aspose.Page

خطوات لدمج عدة ملفات XPS في PDF باستخدام C++.

  1. حدد المسار إلى دليل المستندات.
  2. قم بتهيئة إخراج PDF وتدفقات إدخال ملف XPS.
  3. أنشئ مثيلاً لـ XpsDocument من دفق الإدخال الذي تم إنشاؤه سابقًا.
  4. قم بتهيئة كائن الخيارات باستخدام معلمات TextCompression و ImageCompression و JpegQualityLevel لملف الإخراج عن طريق PdfSaveOptions فئة.
  5. باستخدام فئة PdfDevice ، أنشئ جهاز عرض لتنسيق PDF.
  6. دمج ملفات XPS لإخراج مستند XPS.

كود C++ لدمج XPS في 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());
    }

خطوات دمج عدة ملفات XPS في ملف واحد باستخدام C++.

  1. تهيئة إخراج XPS وتدفقات الإدخال.
  2. قم بإنشاء مصفوفة من ملفات XPS ليتم دمجها مع الملف الأول.
  3. قم بإنشاء مثيل لـ XpsDocument من دفق الإدخال الذي تم إنشاؤه مسبقًا.
  4. دمج ملفات XPS لإخراج مستند XPS.

كود C++ لدمج XPS في 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 ما هو XPS تنسيق الملف

تنسيق XPS مشابه لتنسيق PDF. كلاهما عبارة عن تنسيقات لغة وصف الصفحة (PDL). يعتمد EPS على HTML وليس على لغة PostScript. يمكن أن يحتوي ملف .eps على ترميز لهيكل المستند بالإضافة إلى معلومات حول الشكل الذي سيبدو عليه المستند. هناك أيضًا إرشادات مضافة حول كيفية طباعة المستند وتقديمه. تتمثل ميزة التنسيق في أنه يعمل على إصلاح وصف المستند مما يعني أنه سيبدو كما هو بغض النظر عن من ومن أي نظام تشغيل يفتحه.