Opérations inter-paquets au sein du package XPS
Manipuler les pages, les couleurs et les glyphes au sein du package XPS via C++
L'API Aspose.Page pour C++ propose une bibliothèque distincte pour travailler avec les fichiers XPS, vous permettant de les traiter comme un format distinct. Cette bibliothèque regorge de fonctionnalités utiles, notamment la fusion de documents XPS, leur conversion vers d'autres formats et la manipulation de graphiques à l'intérieur de ceux-ci.
L'un des aspects clés des fichiers XPS est leur capacité à contenir plusieurs fichiers au sein d'un seul document. En conséquence, la bibliothèque Aspose.Page XPS fournit des fonctionnalités pour gérer ces fichiers internes et leurs pages. Ces opérations, connues sous le nom d'« opérations inter-paquets (cross-package operations) », impliquent la manipulation de contenu à travers différents documents XPS.
Cette section se penchera sur des exemples spécifiques d'opérations inter-paquets, telles que la gestion des pages au sein d'un seul document XPS et l'ajout de texte (glyphes) avec des couleurs spécifiques.
Mais pour essayer la fonctionnalité, vous devez d'abord obtenir la solution :
Ouvrez le gestionnaire de packages NuGet, recherchez Aspose.Page et installez-le. Vous pouvez également utiliser la commande suivante à partir de la console du gestionnaire de packages (Package Manager Console).
Étapes pour manipuler des pages dans le package XPS C++.
- Définissez le chemin vers le répertoire des documents.
- Créez un fichier XPS à l’aide de la classe XpsDocument .
- Pour insérer une page active d’un document au début d’un autre document, utilisez la méthode InsertPage() .
- Pour insérer une page active d’un document à la fin d’un autre document, utilisez la méthode AddPage() .
- Pour supprimer une page vide, utilisez la méthode RemovePage() .
- Pour déplacer une page d’un document vers un autre document, utilisez les méthodes InsertPage() et SelectActivePage() .
- Enregistrez les documents XPS modifiés à l’aide de la méthode XPsDocument.Save .
Manipuler les pages
// 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");
Étapes pour ajouter un clone de glyphe dans le package XPS C++.
- Définissez le chemin vers le répertoire des documents.
- Ouvrez un flux (stream) du fichier XPS.
- Créez un fichier XPS à l’aide de la classe XpsDocument.
- Ajoutez des glyphes au document à l’aide de la méthode AddGlyphs() .
- Créez le deuxième fichier XPS à l’aide de la classe XpsDocument.
- Pour cloner le glyphe du premier fichier vers le deuxième fichier, utilisez les méthodes Add() et Clone() .
- Enregistrez les deux documents XPS au moyen de la méthode XPsDocument.Save().
Ajouter un clone de glyphe et changer de couleur
// 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");
Étapes pour ajouter un glyphe rempli d'image C++.
- Définissez le chemin vers le répertoire des documents.
- Ouvrez un flux (stream) du fichier XPS.
- Créez un fichier XPS à l’aide de la classe XpsDocument.
- Ajoutez des glyphes au document à l’aide de la méthode AddGlyphs().
- Pour remplir les glyphes avec un pinceau d’image (image brush), utilisez la méthode CreateImageBrush() .
- Créez le deuxième fichier XPS à l’aide de la classe XpsDocument.
- Ajoutez des glyphes avec la police du premier document au deuxième document à l’aide de la méthode AddGlyphs().
- Créez un pinceau d’image à partir du remplissage du premier document et remplissez les glyphes du deuxième document à l’aide de la méthode CreateImageBrush().
- Enregistrez les deux documents XPS au moyen de la méthode XPsDocument.Save().
Ajouter un glyphe rempli d'image et une image externe
// 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 Qu'est-ce que le format de fichier XPS
XPS (XML Paper Specification) est l’équivalent Microsoft du PDF. Il repose sur XML/HTML, préserve la mise en page sur toutes les plateformes et est indépendant du système d’exploitation.