Paketübergreifende Operationen innerhalb eines XPS-Pakets

Manipulieren Sie Seiten, Farben und Glyphen innerhalb eines XPS-Pakets über C++

 

Die Aspose.Page API für C++ bietet eine separate Bibliothek für die Arbeit mit XPS-Dateien, mit der Sie sie als eigenständiges Format behandeln können. Diese Bibliothek bietet eine Vielzahl nützlicher Funktionen, darunter das Zusammenführen von XPS-Dokumenten, das Konvertieren in andere Formate und das Bearbeiten von Grafiken darin.

Ein wichtiger Aspekt von XPS-Dateien ist die Möglichkeit, mehrere Dateien in einem einzigen Dokument zu enthalten. Infolgedessen bietet die Aspose.Page XPS-Bibliothek Funktionen zur Verwaltung dieser internen Dateien und ihrer Seiten. Diese Operationen, bekannt als "paketübergreifende Operationen (cross-package operations)", umfassen die Manipulation von Inhalten in verschiedenen XPS-Dokumenten.

In diesem Abschnitt werden spezifische Beispiele für paketübergreifende Operationen erläutert, z. B. die Verwaltung von Seiten in einem einzelnen XPS-Dokument und das Hinzufügen von Text (Glyphen) mit bestimmten Farben.

Um die Funktionalität auszuprobieren, müssen Sie sich jedoch zunächst die Lösung besorgen:

  • Öffnen Sie den NuGet-Paketmanager, suchen Sie nach Aspose.Page und installieren Sie es. Sie können auch den folgenden Befehl in der Paketmanager-Konsole (Package Manager Console) verwenden.

Schritte zum Bearbeiten von Seiten in XPS-Paket C++.

  1. Legen Sie den Pfad zum Dokumentenverzeichnis fest.
  2. Erstellen Sie eine XPS-Datei mit der XpsDocument Class .
  3. Um eine aktive Seite von einem Dokument am Anfang eines anderen Dokuments einzufügen, verwenden Sie die Methode InsertPage() .
  4. Um eine aktive Seite von einem Dokument am Ende eines anderen Dokuments einzufügen, verwenden Sie die Methode AddPage() .
  5. Um eine leere Seite zu entfernen, verwenden Sie die Methode RemovePage() .
  6. Um eine Seite von einem Dokument zu einem anderen Dokument zu entfernen, verwenden Sie die Methoden InsertPage() und SelectActivePage() .
  7. Speichern Sie die geänderten XPS-Dokumente mit der Methode XPsDocument.Save .
Manipulieren von Seiten
    // The path to the documents directory.
    System::String dataDir = RunExamples::GetDataDir_WorkingWithCrossPackageOperations();
    
    // Create the first XPS Document
    System::SharedPtr<XpsDocument> doc1 = System::MakeObject<XpsDocument>(dataDir + u"input1.xps");
    
    // Create the second XPS Document
    System::SharedPtr<XpsDocument> doc2 = System::MakeObject<XpsDocument>(dataDir + u"input2.xps");
    
    // Create the third XPS Document
    System::SharedPtr<XpsDocument> doc3 = System::MakeObject<XpsDocument>(dataDir + u"input3.xps");
    
    // Create the fourth XPS Document
    System::SharedPtr<XpsDocument> doc4 = System::MakeObject<XpsDocument>();
    
    // Insert active page (1 in this case) from the second document to the beginning of the fourth document
    doc4->InsertPage(1, doc2->get_Page(), false);
    
    // Insert active page (1 in this case) from the third document to the end of the fourth document
    doc4->AddPage(doc3->get_Page(), false);
    
    // Remove page 2 from the fourth document. This is an empty page that was created when document has been created.
    doc4->RemovePageAt(2);
    
    // Insert page 3 from the first document to the second postion of the fourth document
    doc4->InsertPage(2, doc1->SelectActivePage(3), false);
    
    // Save the fourth XPS document
    doc4->Save(dataDir + u"output/" + u"out.xps");

Schritte zum Hinzufügen eines Glyphenklons in XPS-Paket C++.

  1. Legen Sie den Pfad zum Dokumentenverzeichnis fest.
  2. Öffnen Sie einen Stream der XPS-Datei.
  3. Erstellen Sie eine XPS-Datei mit der XpsDocument Class.
  4. Fügen Sie dem Dokument mit der Methode AddGlyphs() Glyphen hinzu.
  5. Erstellen Sie die zweite XPS-Datei mit der XpsDocument Class.
  6. Um den Glyphen aus der ersten Datei in die zweite Datei zu klonen, verwenden Sie die Methoden Add() und Clone() .
  7. Speichern Sie beide XPS-Dokumente mit der Methode XPsDocument.Save().
Klon einer Glyphe hinzufügen und Farbe ändern
    // The path to the documents directory.
    System::String dataDir = RunExamples::GetDataDir_WorkingWithCrossPackageOperations();
    
    // Create the first XPS Document
    System::SharedPtr<XpsDocument> doc1 = System::MakeObject<XpsDocument>();
    
    // Add glyphs to the first document
    System::SharedPtr<XpsGlyphs> glyphs = doc1->AddGlyphs(u"Times New Roman", 200.0f, System::Drawing::FontStyle::Bold, 50.0f, 250.0f, u"Test");
    
    // Fill glyphs in the first document with one color
    glyphs->set_Fill(doc1->CreateSolidColorBrush(System::Drawing::Color::get_Green()));
    
    // Create the second XPS Document
    System::SharedPtr<XpsDocument> doc2 = System::MakeObject<XpsDocument>();
    
    // Add glyphs cloned from the one's from the first document
    glyphs = doc2->Add<System::SharedPtr<XpsGlyphs>>(glyphs->Clone());
    
    // Fill glyphs in the second document with another color
    (System::ExplicitCast<Aspose::Page::XPS::XpsModel::XpsSolidColorBrush>(glyphs->get_Fill()))->set_Color(doc2->CreateColor(System::Drawing::Color::get_Red()));
    
    // Save the first XPS document
    doc1->Save(dataDir + u"output/" + u"out1.xps");
    
    // Save the second XPS document
    doc2->Save(dataDir + u"output/" + u"out2.xps");

Schritte zum Hinzufügen einer bildgefüllten Glyphe C++.

  1. Legen Sie den Pfad zum Dokumentenverzeichnis fest.
  2. Öffnen Sie einen Stream der XPS-Datei.
  3. Erstellen Sie eine XPS-Datei mit der XpsDocument Class.
  4. Fügen Sie dem Dokument mit der Methode AddGlyphs() Glyphen hinzu.
  5. Um die Glyphen mit einem Bildpinsel (Image Brush) zu füllen, verwenden Sie die Methode CreateImageBrush() .
  6. Erstellen Sie die zweite XPS-Datei mit der XpsDocument Class.
  7. Fügen Sie dem zweiten Dokument Glyphen mit der Schriftart aus dem ersten Dokument über die Methode AddGlyphs() hinzu.
  8. Erstellen Sie einen Bildpinsel aus der Füllung des ersten Dokuments und füllen Sie die Glyphen im zweiten Dokument mit der Methode CreateImageBrush().
  9. Speichern Sie beide XPS-Dokumente mit der Methode XPsDocument.Save().
Bildgefüllte Glyphe und fremdes Bild hinzufügen
    // The path to the documents directory.
    System::String dataDir = RunExamples::GetDataDir_WorkingWithCrossPackageOperations();
    
    // Create the first XPS Document
    System::SharedPtr<XpsDocument> doc1 = System::MakeObject<XpsDocument>();
    
    // Add glyphs to the first document
    System::SharedPtr<XpsGlyphs> glyphs1 = doc1->AddGlyphs(u"Times New Roman", 200.0f, System::Drawing::FontStyle::Bold, 50.0f, 250.0f, u"Test");
    
    // Fill the glyphs with an image brush
    glyphs1->set_Fill(doc1->CreateImageBrush(dataDir + u"R08SY_NN.tif", System::Drawing::RectangleF(0.f, 0.f, 128.f, 192.f), System::Drawing::RectangleF(0.f, 0.f, 64.f, 96.f)));
    (System::ExplicitCast<Aspose::Page::XPS::XpsModel::XpsImageBrush>(glyphs1->get_Fill()))->set_TileMode(Aspose::Page::XPS::XpsModel::XpsTileMode::Tile);
    
    // Create the second XPS Document
    System::SharedPtr<XpsDocument> doc2 = System::MakeObject<XpsDocument>();
    
    // Add glyphs with the font from the first document to the second document
    System::SharedPtr<XpsGlyphs> glyphs2 = doc2->AddGlyphs(glyphs1->get_Font(), 200.0f, 50.0f, 250.0f, u"Test");
    
    // Create an image brush from the fill of the the first document and fill glyphs in the second document
    glyphs2->set_Fill(doc2->CreateImageBrush((System::ExplicitCast<Aspose::Page::XPS::XpsModel::XpsImageBrush>(glyphs1->get_Fill()))->get_Image(), System::Drawing::RectangleF(0.f, 0.f, 128.f, 192.f), System::Drawing::RectangleF(0.f, 0.f, 128.f, 192.f)));
    (System::ExplicitCast<Aspose::Page::XPS::XpsModel::XpsImageBrush>(glyphs2->get_Fill()))->set_TileMode(Aspose::Page::XPS::XpsModel::XpsTileMode::Tile);
    
    // Save the first XPS document
    doc1->Save(dataDir + u"output/" + u"out1.xps");
    
    // Save the second XPS document
    doc2->Save(dataDir + u"output/" + u"out2.xps");

XPS Was ist XPS Dateiformat

XPS (XML Paper Specification) ist Microsofts PDF‑Äquivalent. Es basiert auf XML/HTML, bewahrt das Layout über verschiedene Plattformen hinweg und ist unabhängig vom Betriebssystem.