/// <summary>Il metodo restituisce un file PDF che rappresenta il report delle trasmissioni relative alla UO specificata</summary> /// <param name="filtriTrasm">filtri della trasmissione</param> /// <param name="UO">UO che ha ricevuto o trasmesso</param> /// <returns>FileDocumento</returns> public static int reportTrasmUO(DocsPaVO.filtri.FiltroRicerca[] filtriTrasm, out DocsPaVO.documento.FileDocumento fileDoc, string UO) { int result = 0; fileDoc = null; FileStream fs = null; bool newPage = false; string tipoOggetto = "D"; StampaPDF.Report report = null; string templateXML; string paramDate; try { string pathReport = getPath(); //costruisce il dataTable con le informazioni per il report DataTable dt_Eff; DataTable dt_Ric; //effettuate BusinessLogic.Trasmissioni.QueryTrasmManager.getTrasmissioniUO(out dt_Eff, filtriTrasm, "E"); //ricevute BusinessLogic.Trasmissioni.QueryTrasmManager.getTrasmissioniUO(out dt_Ric, filtriTrasm, "R"); if ((dt_Eff == null || dt_Eff.Rows.Count < 1) && (dt_Ric == null || dt_Ric.Rows.Count < 1)) { return(0); } //crea il report, inserendo i valori parametrici e riempiendo la tabella paramDate = setParam(filtriTrasm, ref tipoOggetto); templateXML = pathReport; if (tipoOggetto.Equals("D")) { templateXML += "XMLRepTrasmUO_DOC.xml"; } else { templateXML += "XMLRepTrasmUO_FASC.xml"; } fs = new FileStream(templateXML, System.IO.FileMode.Open, System.IO.FileAccess.Read); report = new StampaPDF.Report(fs, pathReport); #region Sostituzione valori parametrici in base al tipo di oggetto Hashtable ht = new Hashtable(); ht["@param1"] = UO; ht["@param2"] = paramDate; report.replace(null, ht); #endregion report.printData(null); if (dt_Eff != null && dt_Eff.Rows.Count > 0) { report.appendParagraph("E_P", "", false); //intestazione trasm Effettuate report.appendTable("E_T", dt_Eff, false); //tabella trasm Effettuate newPage = true; } if (dt_Ric != null && dt_Ric.Rows.Count > 0) { report.appendParagraph("R_P", "", newPage); //intestazione trasm Ricevute report.appendTable("R_T", dt_Ric, false); //tabella trasm Ricevute } fs.Close(); MemoryStream ms = report.close(); ms.Flush(); fileDoc = new DocsPaVO.documento.FileDocumento(); fileDoc.content = ms.GetBuffer(); fileDoc.length = fileDoc.content.Length; fileDoc.contentType = "application/pdf"; fileDoc.name = ""; } catch (StampaPDF.ReportException re) { logger.Debug("Errore nella creazione del Report (stampaPDF)", re); if (fs != null) { fs.Close(); } if (report != null) { report.close(); } result = (int)re.code; } catch (Exception e) { logger.Debug("Errore nella gestione di Report (stampa)", e); if (fs != null) { fs.Close(); } if (report != null) { report.close(); } result = -1; } return(result); }
/// <summary>Il metodo restituisce un file PDF che rappresenta il report delle trasmissioni relative all'oggetto specificato (documento o fascicolo)</summary> /// <param name="obj">oggetto della trasmissione</param> /// <returns>FileDocumento</returns> public static int reportTrasmDocFasc(DocsPaVO.trasmissione.OggettoTrasm obj, out DocsPaVO.documento.FileDocumento fileDoc) { int result = 0; fileDoc = null; FileStream fs = null; StampaPDF.Report report = null; try { string pathReport = getPath(); string templateXML = pathReport + "XMLRepTrasmDocFasc.xml"; //costruisce il dataTable con le informazioni per il report DataTable dt_U; DataTable dt_R; bool newPage = false; //trasmissioni a ruoli BusinessLogic.Trasmissioni.QueryTrasmManager.getTrasmissioniDocFasc(out dt_R, obj, "R"); //trasmissioni a utenti BusinessLogic.Trasmissioni.QueryTrasmManager.getTrasmissioniDocFasc(out dt_U, obj, "U"); if ((dt_R == null || dt_R.Rows.Count < 1) && (dt_U == null || dt_U.Rows.Count < 1)) { return(0); } //crea il report, inserendo i valori parametrici e riempiendo la tabella fs = new FileStream(templateXML, System.IO.FileMode.Open, System.IO.FileAccess.Read); report = new StampaPDF.Report(fs, pathReport); #region Sostituzione valori parametrici in base al tipo di oggetto Hashtable ht = new Hashtable(); string idOggetto; string descOggetto; if (obj.infoDocumento != null) { if (obj.infoDocumento.segnatura != null && !obj.infoDocumento.segnatura.Equals("")) { idOggetto = "DOCUMENTO: " + obj.infoDocumento.segnatura; } else { idOggetto = "DOCUMENTO: " + obj.infoDocumento.docNumber; } descOggetto = "OGGETTO: " + obj.infoDocumento.oggetto; } else { idOggetto = "FASCICOLO: " + obj.infoFascicolo.codice; descOggetto = "DESCRIZIONE: " + obj.infoFascicolo.descrizione; } ht["@param1"] = idOggetto; ht["@param2"] = descOggetto; report.replace(null, ht); #endregion report.printData(null); // // dt_R.Rows[0][3].ToString()==obj.infoDocumento. // if (dt_R != null && dt_R.Rows.Count > 0) { report.appendParagraph("R_P", "", false); //intestazione trasm a Ruoli report.appendTable("R_T", dt_R, false); //tabella trasm a Ruoli newPage = true; } if (dt_U != null && dt_U.Rows.Count > 0) { report.appendParagraph("U_P", "", newPage); //intestazione trasm a Utenti report.appendTable("U_T", dt_U, false); //tabella trasm a Utenti } MemoryStream ms = report.close(); ms.Flush(); fs.Close(); fileDoc = new DocsPaVO.documento.FileDocumento(); fileDoc.content = ms.GetBuffer(); fileDoc.length = fileDoc.content.Length; fileDoc.contentType = "application/pdf"; fileDoc.name = ""; } catch (StampaPDF.ReportException re) { logger.Debug("Errore nella creazione del Report (stampaPDF)", re); if (fs != null) { fs.Close(); } if (report != null) { report.close(); } result = (int)re.code; } catch (Exception e) { logger.Debug("Errore nella gestione di Report (stampa)", e); if (fs != null) { fs.Close(); } if (report != null) { report.close(); } result = -1; } return(result); }
public static SAAdminTool.DocsPaWR.FileDocumento do_MakePdfReport(ReportDisponibili tipoReport, string templateFilePath, string titolo, DataSet ds, ArrayList parametriPDF) { //inizializzazione dei parametri di input //templateFilePath = templateFilePath + "XMLProspettoRiepilogativo.xml"; StampaPDF.Report stampaReport; string RootPathTemplate = AppDomain.CurrentDomain.BaseDirectory + "ProspettiRiepilogativi/Frontend/TemplateXML/"; string schemaFilePath = RootPathTemplate + "XMLReport.xsd"; string outputFilename = DateTime.Now.ToLongDateString() + ".pdf"; DataTable dt = new DataTable(); Byte[] dati; //variabili ausiliarie FileStream fs = null; MemoryStream memStream = null; //inizializzazione parametro di output (caso integrazione Docspa) SAAdminTool.DocsPaWR.FileDocumento doc = new SAAdminTool.DocsPaWR.FileDocumento(); doc.name = outputFilename; doc.path = ""; doc.fullName = "StampaReport_" + DateTime.Now.ToString(); doc.contentType = "application/pdf"; try { try { //lettura template XML fs = new FileStream(templateFilePath, FileMode.Open, FileAccess.Read); } catch (Exception ex) { throw ex; } try { //inizializzazione oggetto StampaPDF stampaReport = new StampaPDF.Report(fs, schemaFilePath, titolo); } catch (Exception ex) { throw ex; } try { //Agginta dei Paragrafi e della tabella //DataTable da inserire nel Report dt = ds.Tables[0]; //Non funziona se i template sono contenuti in IIS //DO_AppendTextInHeader(templateFilePath,"aaa","PIPPO"); DO_AppendObject(stampaReport, tipoReport, parametriPDF, dt); } catch (Exception ex) { throw ex; } try { //Chiusura template xml fs.Close(); //recupero dati per memory stream memStream = stampaReport.getStream(); //chiusura stream stampa stampaReport.close(); } catch (Exception ex) { throw ex; } try { //vettore di byte dati = memStream.GetBuffer(); #region Salviamo su FileSystem //Salviamo su FileSystem //I file si trovano al percorso: RootPathTemplate + nome file #region Determinazione del FileName //string fileName = ""; // switch(tipoReport) // { // case ReportDisponibili.Annuale_By_Registro: // fileName = RootPathTemplate +"\\"+"PDF\\annualeByReg.pdf"; // break; // case ReportDisponibili.Annuale_By_Fascicolo: // fileName = RootPathTemplate +"\\"+"PDF\\annualeByFasc.pdf"; // break; // case ReportDisponibili.Documenti_Classificati: // fileName = RootPathTemplate +"\\"+"PDF\\docClass.pdf"; // break; // case ReportDisponibili.Documenti_Trasmessi_Altre_AOO: // fileName = RootPathTemplate +"\\"+"PDF\\docTrasmToAOO.pdf"; // break; // case ReportDisponibili.Fascicoli_Per_VT: // fileName = RootPathTemplate +"\\"+"PDF\\fascPerVT.pdf"; // break; // case ReportDisponibili.TempiMediLavFascicoli: // fileName = RootPathTemplate +"\\"+"PDF\\TempiMediLavFasc.pdf"; // break; // } // #endregion // // if(fileName != "") // { // Stream outputStream = new FileStream(fileName,FileMode.Create,FileAccess.Write); // outputStream.Write(dati,0,dati.Length); // // outputStream.Flush(); // outputStream.Close(); // outputStream = null; // } #endregion #endregion //chiudo mem stream memStream.Close(); //aggiorno informazioni del doc : utilizzo un tipo infodocumento come output doc.length = (int)dati.Length; doc.content = dati; } catch (Exception ex) { throw ex; } } catch (Exception ex) { throw ex; } finally { //rilascio oggetti utilizzati if (fs != null) { fs.Close(); } if (memStream != null) { memStream.Close(); } //ritorno oggetto doc (caso integrazione Docspa) } return(doc); }