Scopo
Produce un file di output popolando una copia del file template indicato con i dati precedentemente comunicati tramite le funzioni AddParameter, AddValues e AddRecordset.
Sintassi
//
Ris := FileMangler.TranslateFile(file di template, file di output)
Argomenti
File Template | È una stringa contenente il percorso completo del file template da utilizzare per la produzione del risultato (RTF, XLS o PDF) |
File Output | È una stringa contenente il percorso completo del file di output da creare a partire dal template, nel caso di file PDF deve terminare con l'estensione .pdf |
Valore di ritorno
Il valore di ritorno è un numero intero che può valere:
- 0 se non ci sono stati errori;
- 1 per errori dovuti a lettura/scrittura dei file (tipicamente problemi di autorizzazioni o di percorsi non corretti);
- 2 per errori generici (vedere il file System.err per un log completo dell'eccezione);
- 3 per segnalibro troppo grande (> 256 Mbyte!);
- 4 per segnalibro senza terminazione.
- 5 per template Pdf senza form.
- 6 per mancanza delle librerie necessarie alla trasformazione Pdf.
Creare Template PDF
A partire dalla versione 7.0 di IN.DE, Translate File permette di inserire dati in file PDF da utilizzare come template. I dati vengono inseriti all'interno dei file PDF utilizzando il meccanismo delle form PDF.
I template possono essere realizzati con Adobe 8 Professional e Adobe LiveCycle Designer 8.0 attraverso la creazione di Text Field; riportiamo qui una breve descrizione della procedura per inserire form a partire da un PDF già esistente.
- Aprire il file PDF e selezionare "Create New Forms" dal menu "Forms".
- E' possibile utilizzare il sistema automatico di rilevazione dei campi oppure selezionare i campi manualmente; in entrambi i casi i nomi dei campi dovranno essere riscritti.
- Selezionare "TextField" dalla Library di LiveCycle Designer, e tracciare un campo dove necessario. Premere con il tasto destro sul campo creato e selezionare "Rename Object".
- Scrivere il nome del campo che deve essere popolato dal programma; i nomi dei campi non devono contenere '.' oppure '_'.
- Una volta creati tutti i campi necessari salvare il documento template.
- Nel caso si vogliano realizzare delle tabelle (che verranno riempite grazie al metodo AddRecordset) il formato dei nomi dei campi deve essere il seguente:
[NOMETABELLA]_[NOMECOLONNA]_[NUMERORIGA] in cui la prima riga ha numero 1.

Esempio di codice
// Crea il file XLS relativo all'ordine corrente e lo mostra a video
// *****************************************************************
public void Ordini.CreaXLS(
boolean toCSV // Vero per esportare anche un file CSV
optional string MailAddress = "" // Indirizzo di posta elettronica al qu...
)
{
FileMangler fm = new() // Istanzio il componente FileMangler usando la ...
boolean res = 0 //
string CSVFileName = "" //
//
// Aggiungo i valori provenienti dalla query di lookup uno per uno
fm.AddParameter(NomeCliente, Ordini.NomeSocietaClienti.Text)
fm.AddParameter(NomeImpiegato, Ordini.CognomeImpiegati.Text)
//
// Aggiungo i parametri dell'ordine prendendoli dalla riga corrente del
// recordset del pannello Ordini
fm.AddValues(Ordini.Recordset)
//
// Aggiungo i dettagli dell'ordine passando l'intero recordset e il nome del
// named range sul file XLS
fm.AddRecordset(DettagliOrdine, DettagliOrdini.Recordset)
//
// Imposto il componente per l'utilizzo della libreria POI
fm.XLSEngine := POI
//
// Creo un nuovo file XLS partendo dal template, poi lo apro
res := fm.TranslateFile(Path() +c C\ +c FileMangler.xls, Path() +c C\ +c
FileManglerOutput.xls)
//
// Se c'è stato un errore lo segnalo
if res <> ZERO
...
//
// Se devo creo anche su file CSV il recordset dei dettagli ordine
if toCSV
...
//
// Se è stato specificato un indirizzo di posta devo procedere all'invio del
// file via mail
if MailAddress <> Empty String
...
else // Se non devo mandare la mail mostro il file
...
//
// Imposto il file come temporaneo, al termine della sessione corrente sarà
// automaticamente cancellato dal sistema.
EsempiGL.AddTempFile(Path() +c C\ +c FileManglerOutput.xls)
}
- In ambito Java, per la gestione dei file XLS vengono utilizzate alcune librerie di libero utilizzo quali la JXL e la POI. Essere devono essere presenti nella directory SHARED/LIB di Tomcat altrimenti si avrà un errore di tipo 2.
-
Per la gestione dei file PDF, viene utilizzata una libreria di libero utilizzo, iText.
-
In ambito C# è necessario scaricare la .dll ed installarla seguendo questa procedura:
- Aprire il pannello di controllo.
- Aprire "Strumenti di Amministrazione".
- Aprire "Microsoft .NET Framework 2.0 Configuration".
- Selezionare "Manage the Assembly Cache" (gestire la cache degli assembly) e successivamente selezionare "Add an Assembly to the Assembly Cache" (Aggiungere un Assembly alla Cache degli Assembly).
- Selezionare itextsharp.dll da dove lo si è scaricato e premere "APRI".
- In ambito Java è necessario scaricare le librerie iText e BouncyCastle, estrarle e copiarle nella cartella SHARED/LIB di Tomcat.
-
In ambito C# è necessario scaricare la .dll ed installarla seguendo questa procedura:
- In caso di errore si deve fare riferimento ai file di log per una migliore esplicitazione della causa.
- A partire dalla versione 12.1 è possibile specificare le password da utilizzare per criptare il PDF e per permettere agli utenti di leggere il PDF. Per maggiori informazioni rimandiamo alla documentazione delle proprietà PDFPermissions, PDFOwnerPassword e PDFUserPassword.
- A partire dalla versione 19.5 il sistema utilizza il modulo di debug per segnalare errori pertanto occorre fare riferimento alla videata di debug per conoscere il motivo del fallimento dell'esecuzione del metodo.
- Questo componente non è supportato nelle applicazioni offline.
Ultima modifica: 31/10/2022 / Validità: da 6.5.2680