Csomagokon átívelő műveletek az XPS-csomagon belül

Kezelje az oldalakat, a színeket és a glifákat az XPS-csomagon belül C++-on keresztül

 

A C++ Aspose.Page API külön könyvtárat kínál az XPS fájlokkal való munkavégzéshez, lehetővé téve, hogy azokat különálló formátumként kezelje. Ez a könyvtár számos hasznos funkcióval büszkélkedhet, többek között XPS-dokumentumok egyesítésével, más formátumokba történő konvertálásával és a bennük lévő grafikák manipulálásával.

Az XPS fájlok egyik kulcsfontosságú jellemzője, hogy egyetlen dokumentumon belül több fájlt is tartalmazhatnak. Ennek eredményeként az Aspose.Page XPS könyvtár funkciókat biztosít ezen belső fájlok és oldalaik kezeléséhez. Ezek a műveletek, amelyeket "csomagokon átívelő műveleteknek (cross-package operations)" neveznek, a tartalom különböző XPS dokumentumok közötti manipulálását foglalják magukban.

Ez a szakasz a csomagokon átívelő műveletek konkrét példáival foglalkozik, mint például az oldalak kezelése egyetlen XPS-dokumentumon belül, valamint bizonyos színű szövegek (glifák) hozzáadása.

De a funkcionalitás kipróbálásához először meg kell szereznie a megoldást:

  • Nyissa meg a NuGet Csomagkezelőt (Package Manager), keressen rá az Aspose.Page kifejezésre, és telepítse. A következő parancsot is használhatja a Csomagkezelő Konzolból (Package Manager Console).

Lépések az oldalak kezeléséhez az XPS-csomag C++ rendszerében.

  1. Állítsa be a dokumentumok könyvtárának elérési útját.
  2. Hozzon létre egy XPS-fájlt az XpsDocument Class használatával.
  3. Egy aktív oldal beszúrásához az egyik dokumentumból egy másik dokumentum elejére, használja az InsertPage() metódust.
  4. Egy aktív oldal beszúrásához az egyik dokumentumból egy másik dokumentum végére, használja az AddPage() metódust.
  5. Egy üres oldal eltávolításához használja a RemovePage() metódust.
  6. Egy oldal eltávolításához (áthelyezéséhez) az egyik dokumentumból a másikba használja az InsertPage() és a SelectActivePage() metódusokat.
  7. Mentse a megváltozott XPS-dokumentumokat az XPsDocument.Save metódus használatával.
Oldalak manipulálása
    // 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");

Lépések egy glifaklón hozzáadásához az XPS-csomagon belül (C++).

  1. Állítsa be a dokumentumok könyvtárának elérési útját.
  2. Nyisson meg egy folyamot (stream) az XPS-fájlhoz.
  3. Hozzon létre egy XPS-fájlt az XpsDocument Class használatával.
  4. Adjon glifákat a dokumentumhoz az AddGlyphs() metódus használatával.
  5. Hozza létre a második XPS fájlt az XpsDocument Class használatával.
  6. A glifa klónozásához az első fájlból a másodikba használja az Add() és a Clone() metódust.
  7. Mentse mindkét XPS-dokumentumot az XPsDocument.Save() metódus segítségével.
Glifaklón hozzáadása és szín megváltoztatása
    // 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");

Lépések kép-kitöltött glifa hozzáadásához (C++).

  1. Állítsa be a dokumentumok könyvtárának elérési útját.
  2. Nyisson meg egy folyamot (stream) az XPS-fájlhoz.
  3. Hozzon létre egy XPS-fájlt az XpsDocument Class használatával.
  4. Adjon glifákat a dokumentumhoz az AddGlyphs() metódus használatával.
  5. A glifák képecsettel (image brush) történő kitöltéséhez használja a CreateImageBrush() metódust.
  6. Hozza létre a második XPS fájlt az XpsDocument Class használatával.
  7. Adjon hozzá glifákat az első dokumentum betűtípusával a második dokumentumhoz az AddGlyphs() metódus használatával.
  8. Hozzon létre egy képecsetet az első dokumentum kitöltéséből, és töltse ki a glifákat a második dokumentumban a CreateImageBrush() metódus használatával.
  9. Mentse mindkét XPS-dokumentumot az XPsDocument.Save() metódus segítségével.
Képpel kitöltött glifa és idegen kép hozzáadása
    // 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 Mi a XPS fájlformátum

XPS (XML Paper Specification) a Microsoft PDF‑alternatívája. XML/HTML‑alapú, platformfüggetlen, és megőrzi a dokumentum elrendezését különböző operációs rendszereken.