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++.
- Legen Sie den Pfad zum Dokumentenverzeichnis fest.
- Erstellen Sie eine XPS-Datei mit der XpsDocument Class .
- Um eine aktive Seite von einem Dokument am Anfang eines anderen Dokuments einzufügen, verwenden Sie die Methode InsertPage() .
- Um eine aktive Seite von einem Dokument am Ende eines anderen Dokuments einzufügen, verwenden Sie die Methode AddPage() .
- Um eine leere Seite zu entfernen, verwenden Sie die Methode RemovePage() .
- Um eine Seite von einem Dokument zu einem anderen Dokument zu entfernen, verwenden Sie die Methoden InsertPage() und SelectActivePage() .
- 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++.
- Legen Sie den Pfad zum Dokumentenverzeichnis fest.
- Öffnen Sie einen Stream der XPS-Datei.
- Erstellen Sie eine XPS-Datei mit der XpsDocument Class.
- Fügen Sie dem Dokument mit der Methode AddGlyphs() Glyphen hinzu.
- Erstellen Sie die zweite XPS-Datei mit der XpsDocument Class.
- Um den Glyphen aus der ersten Datei in die zweite Datei zu klonen, verwenden Sie die Methoden Add() und Clone() .
- 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++.
- Legen Sie den Pfad zum Dokumentenverzeichnis fest.
- Öffnen Sie einen Stream der XPS-Datei.
- Erstellen Sie eine XPS-Datei mit der XpsDocument Class.
- Fügen Sie dem Dokument mit der Methode AddGlyphs() Glyphen hinzu.
- Um die Glyphen mit einem Bildpinsel (Image Brush) zu füllen, verwenden Sie die Methode CreateImageBrush() .
- Erstellen Sie die zweite XPS-Datei mit der XpsDocument Class.
- Fügen Sie dem zweiten Dokument Glyphen mit der Schriftart aus dem ersten Dokument über die Methode AddGlyphs() hinzu.
- Erstellen Sie einen Bildpinsel aus der Füllung des ersten Dokuments und füllen Sie die Glyphen im zweiten Dokument mit der Methode CreateImageBrush().
- 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.