MAUI non finisce mai di sorprendermi !
Che sia chiaro: mi stupisce spesso svelandomi aspetti negativi, ma anche, ogni tanto, proponendomi aspetti negativi inaspettati.
Per inciso: per ora il mio giudizio è globalmente positivo. C’è ancora un poco di strada da fare, ma direi che l’SDK è assolutamente pronto per essere usato in “produzione”.
Qualche giorno fa stavo analizzando la possibilità di dotare una mobile app scritta, appunto, in MAUI della possibilità di creare pdf con inglobato al suo interno un QrCode.
Per tratteggiare meglio la questione occorre dire che in MAUI non ci sono molti problemi per creare un pdf con all’interno testo e immagini (si possono usare allo scopo varie librerie e sistemi), così anche per visualizzare un Barcode o un QRCode (vedi ad esempio, la mitica libreria ZXing.Net.Maui).
Le cose iniziamno a farsi complicate quando si vogliono mettere insieme le due cose: QRCode all’interno di un pdf.
Studiando un pò il problema ho visto che le possibili soluzioni passano tutte dallo stesso concetto: creare un’immagine in formato jpg del QRCode che si vuole includere all’interno del pdf.
Più facile a dirsi che a farsi: nell’ambito mobile non è affatto cosa banale realizzare una cosa del genere. Per carità: nulla di irraggiungibile, ma certamente non facilissimo da realizzare.
Immaginavo di dover mettere mano a codice specializzato per ogni piattaforma: con MAUI, invece, è possibile risolvere la cosa con poco sforzo !
Infatti dopo un poco di ricerca incappo nella fantastica istruzione che ci mette a disposizione MAUI, chiamata CaptureAsync.
Spieghescion tecnica. L’istruzione è una extension di IView, e quindi può essere applicato a qualsiasi elemento grafico usatgo in MAUI. Una volta invocata l’istruzione questa restituisce un oggetto IScreenshotResult, la cui caratteristica è che può essere trasformata facilmente in uno stream, e da qui ottenere un’immagine.
Quindi in definitiva l’istruzione CaptureAsync permette di creare un’immagine di quanto visualizzato da qualsiasi elemento grafico usato in MAUI.
Uno specie di PRINT-SCREEN per capirsi.
A questo punto realizzare quanto ripromesso in queste righe diventa un gioco da ragazzi.
- Si visualizza il QRCode che si vuole inglobare nel pdf.
- Si applica all’elemento l’istruzione CaptureAsync e così facendo si ottiene come risultato un’immagine jpg.
- Si ingloba nel pdf l’immagine appena ottenuta.
qrCode è l’elemento posizionato sulla pagina XAML che visualizza il QRCode.
Al termine del codice visualizzato si ottiene un’immagine in formato jpg nel path pathFile, che può essere facilmente aggiunta a qualsiasi pdf.
Spero che queste note Vi siano utili.
Linkografia
Github: libreria per creare QRCode in MAUI ZXing.Net.Maui
MAUI: Capture Async
YouTube – Gerald Versluis: Taking (Partial) Screenshots of your .NET MAUI App