XPS-Dokumente in PDF zusammenführen

C++-API-Lösung zum Kombinieren mehrerer XPS-Dateien

 

Das XPS-Dateiformat ermöglicht die Speicherung mehrerer Dokumente in einer einzigen Datei und kann auch mehrere Seiten enthalten. Die Aspose.Page API-Lösung für C++ bietet die Möglichkeit, mehrere Dateien zu einer zusammenzuführen, was zu einer XPS- oder PDF-Datei führt, die den kombinierten Inhalt aller Originaldateien enthält.

Hier finden Sie ein Codebeispiel zur Verwendung der API zum Zusammenführen von XPS-Dateien. Um zu erkunden, wie diese Funktionalität in eine Weblösung integriert oder für die Online-Dateizusammenführung verwendet werden kann, können Sie den plattformübergreifenden XPS Merger ausprobieren. Werkzeug.

Um PS- und EPS-Dateien zusammenzuführen, benötigen Sie:

  • Aspose.Page für die C++-API, eine funktionsreiche, leistungsstarke und einfach zu verwendende API zur Dokumentenbearbeitung und -konvertierung für die C++-Plattform.

  • Sie können die neueste Version direkt herunterladen, öffnen Sie einfach den NuGet-Paketmanager, suchen Sie nach Aspose.Page.Cpp und installieren Sie es. Sie können auch den folgenden Befehl in der Paket-Manager-Konsole verwenden.

Package Manager Console Command


    PM> Install-Package Aspose.Page

Schritte zum Zusammenführen mehrerer XPS-Dateien zu PDF mit C++.

  1. Legen Sie den Pfad zum Dokumentenverzeichnis fest.
  2. Initialisieren Sie die PDF-Ausgabe- und XPS-Datei-Eingabestreams.
  3. Erstellen Sie eine Instanz von XpsDocument aus dem zuvor erstellten Eingabestream.
  4. Optionsobjekt mit den Parametern TextCompression, ImageCompression, JpegQualityLevel für die Ausgabedatei mittels PdfSaveOptions Klasse.
  5. Erstellen Sie mithilfe der Klasse PdfDevice ein Wiedergabegerät für das PDF-Format.
  6. Führen Sie XPS-Dateien zusammen, um ein XPS-Dokument auszugeben.

C++-Code zum Zusammenführen von XPS mit 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());
    }

Schritte zum Zusammenführen mehrerer XPS-Dateien zu einer einzigen Datei mit C++.

  1. Initialisieren Sie die XPS-Ausgabe- und -Eingabestreams.
  2. Erstellen Sie ein Array von XPS-Dateien, die mit der ersten zusammengeführt werden sollen.
  3. Erstellen Sie eine Instanz von XpsDocument aus dem zuvor erstellten Eingabestream.
  4. Führen Sie XPS-Dateien zusammen, um ein XPS-Dokument auszugeben.

C++-Code zum Zusammenführen von XPS mit 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 Was ist XPS Dateiformat

Das XPS-Format ähnelt dem PDF-Format. Beides sind Formate der Seitenbeschreibungssprache (PDL). EPS basiert auf HTML und nicht auf der PostScript-Sprache. Die .eps-Datei kann ein Markup der Dokumentstruktur zusammen mit Informationen darüber enthalten, wie das Dokument aussehen würde. Es gibt auch Anweisungen zum Drucken und Rendern des Dokuments. Das Merkmal des Formats ist, dass es die Beschreibung des Dokuments festlegt, was bedeutet, dass es gleich aussieht, egal wer und von welchem ​​​​Betriebssystem es öffnet.