Operazioni inter-pacchetto nel pacchetto XPS
Manipola pagine, colori e glifi all’interno del pacchetto XPS tramite C++
L'API Aspose.Page per C++ offre una libreria separata per lavorare con i file XPS, consentendoti di trattarli come un formato distinto. Questa libreria vanta una varietà di funzioni utili, tra cui l'unione di documenti XPS, la loro conversione in altri formati e la manipolazione della grafica al loro interno.
Un aspetto fondamentale dei file XPS è la loro capacità di contenere più file all'interno di un singolo documento. Di conseguenza, la libreria Aspose.Page XPS fornisce funzionalità per la gestione di questi file interni e delle relative pagine. Queste operazioni, note come "operazioni inter-pacchetto (cross-package operations)", comportano la manipolazione del contenuto su diversi documenti XPS.
Questa sezione approfondirà esempi specifici di operazioni tra i pacchetti, come la gestione delle pagine all'interno di un singolo documento XPS e l'aggiunta di testo (glifi) con colori specifici.
Ma per poter provare questa funzionalità è necessario prima procurarsi la soluzione:
Apri il gestore pacchetti NuGet, cerca Aspose.Page e installalo. Puoi anche utilizzare il seguente comando dalla Console di Gestione pacchetti (Package Manager Console).
Passaggi per manipolare le pagine nel pacchetto XPS in C++.
- Imposta il percorso della directory dei documenti.
- Crea un file XPS utilizzando la Classe XpsDocument .
- Per inserire una pagina attiva da un documento all’inizio di un altro documento utilizza il metodo InsertPage() .
- Per inserire una pagina attiva da un documento alla fine di un altro documento utilizza il metodo AddPage() .
- Per rimuovere una pagina vuota utilizza il metodo RemovePage() .
- Per rimuovere (spostare) una pagina da un documento a un altro documento utilizza i metodi InsertPage() e SelectActivePage() .
- Salva i documenti XPS modificati utilizzando il metodo XPsDocument.Save .
Manipola Pagine
// 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");
Passaggi per aggiungere un clone di glifo all'interno del pacchetto XPS in C++.
- Imposta il percorso della directory dei documenti.
- Apri un flusso (stream) del file XPS.
- Crea un file XPS utilizzando la Classe XpsDocument.
- Aggiungi glifi al documento utilizzando il metodo AddGlyphs() .
- Crea il secondo file XPS utilizzando la Classe XpsDocument.
- Per clonare il glifo dal primo file al secondo file, utilizza i metodi Add() e Clone() .
- Salva sia i documenti XPS tramite il metodo XPsDocument.Save().
Aggiungi clone di un glifo e cambia colore
// 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");
Passaggi per aggiungere in C++ un Glifo riempito con un'immagine.
- Imposta il percorso della directory dei documenti.
- Apri un flusso del file XPS.
- Crea un file XPS utilizzando la Classe XpsDocument.
- Aggiungi glifi al documento utilizzando il metodo AddGlyphs().
- Per riempire i glifi con un pennello immagine (image brush) utilizza il metodo CreateImageBrush() .
- Crea il secondo file XPS utilizzando la Classe XpsDocument.
- Aggiungi al secondo documento glifi con il font del primo documento utilizzando il metodo AddGlyphs().
- Crea un pennello immagine dal riempimento del primo documento e riempi i glifi nel secondo documento utilizzando il metodo CreateImageBrush().
- Salva entrambi i documenti XPS tramite il metodo XPsDocument.Save().
Aggiungi glifo riempito di immagine e immagine esterna
// 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 Cos'è il formato file XPS
XPS (XML Paper Specification) è l’alternativa Microsoft al PDF. Basato su XML/HTML, mantiene il layout su diverse piattaforme ed è indipendente dal sistema operativo.