Lavorare con i canvas all’interno di XPS

Ritagliare (clip) e trasformare (transform) i canvas nei file XPS utilizzando l’API C++

 

Nei file XPS, un canvas è un'area rettangolare su una pagina in cui è possibile disegnare contenuti visivi, come testo, immagini e forme. Funge da contenitore per questi elementi e fornisce un framework per organizzarli e stratificarli (layering). I canvas possono essere riutilizzati in diverse parti del documento o anche in più documenti, il che fornisce un modo flessibile per strutturare e organizzare i contenuti all'interno di un documento XPS. Caratteristiche chiave dei canvas nei file XPS:

  • I canvas possono essere annidati (nested) all’interno di altri canvas, creando una struttura gerarchica che consente layout (layouts) complessi e il raggruppamento di elementi.
  • I canvas possono essere trasformati utilizzando varie operazioni, come traslazione (translation), rotazione (rotation) e ridimensionamento (scaling). Ciò consente un posizionamento flessibile e il ridimensionamento del contenuto.
  • I canvas possono essere ritagliati (clip) in regioni specifiche, limitando l’area visibile del loro contenuto. Ciò è utile per creare forme ed effetti intricati.
  • I canvas possono contenere diversi elementi visivi, inclusi esecuzioni di testo (text runs), paragrafi e caselle di testo (text boxes). Possono anche contenere immagini, forme geometriche e altri canvas.

La gestione dei canvas nei documenti è una delle funzionalità offerte da Aspose.Page per C++. Questa soluzione funziona con diversi linguaggi di descrizione della pagina, XPS in particolare.

Per trasformare (transform) i canvas di un file XPS, segui la guida di seguito:

  1. Crea un file XPS utilizzando la classe XpsDocument.
  2. Crea il canvas principale, comune a tutti gli elementi della pagina, utilizzando il metodo AddCanvas().
  3. Effettua offset sinistro e superiore nel canvas principale utilizzando il metodo CreateMatrix().
  4. Crea una geometria del percorso rettangolare (rectangle path geometry) con il metodo CreatePathGeometry().
  5. Crea un riempimento per i rettangoli utilizzando la classe XpsBrush.
  6. Per creare un rettangolo nel canvas 2 e riempirlo, utilizza la classe XpsPath.
  7. Per traslare il canvas 3 in modo da posizionare un nuovo rettangolo sotto il rettangolo precedente, utilizza il metodo CreateMatrix().
  8. Per traslare questo canvas sul lato destro della pagina, usa il metodo Translate().
  9. Per ridimensionare (scale) il canvas 4, chiama il metodo Scale().
  10. Per ruotare (rotate) il canvas 5 attorno a un punto di 45 gradi; il metodo RotateAround() è molto utile.
  11. Salva il documento XPS modificato utilizzando il metodo XpsDocument.Save().
La trasformazione del canvas (canvas transformation)
Il seguente frammento di codice mostra come ritagliare i canvas dei file XPS all'interno della soluzione API Aspose.Page per C++.

Per ritagliare (clip) i canvas di un file XPS, segui la guida di seguito:

  1. Crea o apri un file XPS usando la classe XpsDocument.
  2. Crea il canvas principale, comune a tutti gli elementi della pagina, utilizzando il metodo AddCanvas().
  3. Effettua offset sinistro e superiore nel canvas principale utilizzando il metodo CreateMatrix().
  4. Crea una geometria del percorso rettangolare con il metodo CreatePathGeometry().
  5. Crea un riempimento per i rettangoli utilizzando la classe XpsBrush.
  6. Per aggiungere un altro canvas con un clip al canvas principale, chiama nuovamente il metodo AddCanvas().
  7. Crea la geometria circolare per il clip usando la classe XpsPathGeometry.
  8. Per creare un rettangolo in questo canvas e riempirlo, usa la classe XpsPath.
  9. Aggiungi un altro canvas con il metodo AddCanvas(), quindi crea un rettangolo in questo canvas e traccialo con la classe XpsPathGeometry.
  10. Salva il documento XPS modificato utilizzando il metodo XpsDocument.Save().
Il ritaglio del canvas (canvas clipping)

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.