English
Instant Developer Foundation Documentazione
  • Reference Librerie
  • Librerie Componenti
  • File Mangler
  • Conversione RTF, XLS e PDF

Translate File

funzione copia link

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

int Ris = 0 // Leggo il risultato della traduzione
// 
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 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

Vedi Anche

  • Add Parameter (procedura)
  • Add Values (procedura)
  • Add Recordset (procedura)
  • Add Temp File (procedura)
  • Template file (XLS) da utilizzare assieme al progetto di esempio.
  • PDF Permissions (proprietà)
  • PDF Owner Password (proprietà)
  • PDF User Password (proprietà)
  • Scarica iTextCS.zip
    Scarica iTextJava.zip

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum