OGGETTO VISUALIZZATORE DOCUMENTO

Descrizione

L’oggetto VisualizzatoreDocumento, disponibile a partire dalla release 2023.00+ solo per la versione desktop, consente la visualizzazione di un file in formato PDF, Word, Excel, PowerPoint, HTML ed e-Mail.

Attraverso apposite proprietà, è possibile definire se l’utente può inserire annotazioni o meno. E’ inoltre possibile estrarre o assegnare tali annotazioni.

NOTA IMPORTANTE: per motivi di performance legati alla struttura dell’oggetto, è indispensabile inserire l’oggetto all’interno di un oggetto Contenitore avente la proprietà ContenitoreAggiornamento a true. Tutti gli altri oggetti del form dovranno a loro volta essere inseriti in un oggetto Contenitore avente anch’esso tale proprietà a True. In questo modo, si eviterà che ogni PostBack della pagina aggiorni la visualizzazione del documento, perdendo eventuali modifiche fatte.
E’ evidente che eventuali aggiornamenti che dovranno essere forzati, come ad esempio la modifica del documento visualizzato attraverso la proprietà DocumentPath, oppure il caricamento delle annotazioni tramite il metodo ImportAnnotations, dovranno essere seguiti da una chiamata al metodo form.UpdateContainer passando come parametro il contenitore che contiene il visualizzatore.

Proprietà specifiche

Oltre alle proprietà comuni (vedi) non sono disponibili altre proprietà.

Proprietà utilizzabili da codice lato Server (VB.NET/C#)

  • AllowDownloadse True visualizza il pulsante per scaricare il file. Default false.
  • AllowPrintse True visualizza il pulsante per stampareil file. Default false.
  • DocumentPath: percorso del documento visualizzato.
  • EnableEditingse True (valore di default) è possibile modificare il file, inserendo commenti, disegni, ecc. e modificando i valori in eventuali campi.
  • ShowAnnotationsToolbarse True (valore di default) viene visualizzata la barra che consente di inserire annotazioni e commenti.
  • ShowNavigationPanelse True (valore di default) viene visualizzato sulla sinistra il pannello di navigazione fra le pagine.
  • Visiblese True l’oggetto è visibile nel form, in caso contrario lo si assegna con False.

Metodi utilizzabili da codice lato Server (VB.NET/C#)

Nel codice degli eventi è possibile utilizzare i seguenti metodi:

  • LoadDocument(<path>): carica il documento di cui viene specificato il percorso.
  • ImportAnnotations(<annotationsObject>): carica le annotazioni contenute nella stringa JSON specificata nel parametro.

Metodi utilizzabili da codice lato Client (Javascript)

  • show()visualizza l’oggetto.
  • hide()nasconde l’oggetto.
  • viewer()ritorna l’oggetto visualizzatore.
  • saveAsBase64(<callback>)salva il file modificato in una stringa Base64 che viene passata alla funzione specificata nel parametro. Vedere esempio riportato sotto.
  • exportAnnotations(<callback>)salva le annotazioni in formato JSON nella stringa che viene passata alla funzione specificata nel parametro. Vedere esempio riportato sotto.
  • selectAnnotation(<annotationID>)seleziona l’annotazione avente l’identificativo specificato nel parametro <annotationID>
  • selectAnnotationByText(<text>)seleziona l’annotazione avente il testo specificato nel parametro <text>
  • addFreeTextAnnotation(<text>,<pageNumber>,<X>,<Y>,<width>,<height>,<optional fontSize>,<optional fontColor>): aggiunge una annotazione testuale contenente il testo <text> alla pagina <pageNumber> nella posizione e con la dimensione indicate dai parametri <X>, <Y>, <width> e <height>, e con la possibilità di specificare opzionalmente la dimensione del font nel parametro <fontSize> e il colore del testo nel parametro <fontColor>. Il metodo ritorna l’ID dell’annotazione.
  • addRectangleAnnotation(<text>,<pageNumber>,<X>,<Y>,<width>,<height>,<optional borderColor>,<optional fillColor>): aggiunge un rettangolo identificato dal nome contenuto nel parametro <text> alla pagina <pageNumber> nella posizione e con la dimensione indicate dai parametri <X>, <Y>, <width> e <height>, e con la possibilità di specificare opzionalmente il colore del bordo nel parametro <borderColor> (default rosso) e il colore del riempimento nel parametro <fillColor> (default trasparente). Il metodo ritorna l’ID dell’annotazione.
  • editAnnotation(<annotationID>,<text>): modifica l’annotazione avente l’identificativo specificato nel parametro annotationID assegnando il testo specificato nel parametro text
  • deleteAnnotation(<annotationID>): elimina l’annotazione avente l’identificativo specificato nel parametro annotationID
  • getAnnotationSizeAndPosition(<annotationID>): ritorna un oggetto con le proprietà “x”, “y”, “width” ed “height” contenente la posizione e le dimensioni dell’annotazione avente l’identificativo specificato nel parametro annotationID
  • getAnnotations(): ritorna un array contenente tutte le annotazioni contenute nel documento
  • getPageSize(<page>): ritorna un oggetto con le proprietà “height” e “width” contenenti le dimensioni della pagina il cui numero è specificato nel parametro
  • getPageCount(): ritorna il numero delle pagine del documento

Esempio di utilizzo del metodo Javascript saveAsBase64

Il seguente codice può essere collegato all’evento client di un pulsante, e salva il documento contenuto nell’oggetto DocumentViewer1 nel campo di testo multiriga Base64Document per poi richiamare il metodo ServerExecute dell’oggetto Procedura denominato SaveDocument, il quale salverà il file.

$('#<DocumentViewer1>').saveAsBase64(function(value) {
    $('#<Base64Document>').setValue(value)
    $('#<SaveDocument>').ServerExecute()
    })

Questo è il codice collegato all’EventoEsegui dell’oggetto procedura SaveDocument. Come si può vedere, salva il contenuto Base64 contenuto nell’oggetto Base64Document nel file il cui percorso è contenuto nell’oggetto Path.

Base64ToFile(form.FindControl("Base64Document").Text,form.FindControl("Path").value)

Esempio di utilizzo del metodo Javascript exportAnnotations

Il seguente codice può essere collegato all’evento client di un pulsante, e salva le annotazioni in formato JSON nel campo testo multiriga AnnotationJSON, per poi richiamare il metodo ServerExecute dell’oggetto Procedura denominato ElaboraAnnotazioni.

$('#<DocumentViewer1>').exportAnnotations(function(value) {
    $('#<AnnotationJSON>').setValue(value)
    $('#<ElaboraAnnotazioni>').ServerExecute()
})

Questo è il codice collegato all’EventoEsegui dell’oggetto procedura ElaboraAnnotazioni. Come si può vedere, viene usata la libreria NewtonSoft.JSON per estrarre le coordinate di tutte le annotazioni di tipo “Forma”, in particolare, in questo caso, un rettangolo, e utilizzarle poi per passarle ad un altro oggetto di tipo Procedura.

Dim obj As Newtonsoft.Json.linq.JObject = Newtonsoft.Json.linq.JObject.Parse(form.FindControl("AnnotationJSON").value)
Dim i as integer

For i=0 To CType(obj("pdfAnnotation")("0")("shapeAnnotation"),Newtonsoft.Json.Linq.JArray).count-1
    dim ann as Newtonsoft.Json.Linq.JObject=obj("pdfAnnotation")("0")("shapeAnnotation")(i)

    dim X as Double=val(ann("Bounds")("X"))*72/96
    dim Y as Double=val(ann("Bounds")("Y"))*72/96
    dim width as Double=val(ann("Bounds")("Width"))*72/96
    dim height as Double=val(ann("Bounds")("Height"))*72/96

    form.FindControl("ExtractText").Execute(X,Y,width,height)
Next