using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Collections; using ceTe.DynamicPDF; using ceTe.DynamicPDF.Text; using PDFGenerator.Presentation.Section.Tables; using PDFGenerator.BusinessLayer.DataSection; using PDFGenerator.Presentation.Section.Charts; using PDFGenerator.BusinessLayer; namespace PDFGenerator.Presentation.Section { public class S31 : ISezione { public S31() { // // TODO: Add constructor logic here // } #region ISezione Members public void writeSezione(DataThread dataThread) { DocumentPDF document = dataThread.DocumentPDF; DatiTabella datitab = new DatiTabella(); DataSetS31 set = (DataSetS31)dataThread.Data.DatiSezione; datitab.table = set.Tables["Intermediario"]; int ChartHeigth = 51 + 23 * datitab.table.Rows.Count; datitab.setY(document.getLastPos()); datitab.setIsRet(); datitab.setIsLinee(1); datitab.setHeader(); datitab.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false); datitab.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false); datitab.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false); //eventuali operazioni sul dataset //calcola se entra nella pagina altrimenti aggiunge una nuova pagina. In questa sezione il # di righe è fissato if (document.checkMargin(datitab.GetRowDim() * datitab.getNumRow()) || document.checkMargin(ChartHeigth)) document.addPage(); ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage(); //aggiorna l'indice if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") document.setSezTitoloDiagnosi(dataThread.SezioneReport.Titolo); else document.setSezTitolo(dataThread.SezioneReport.Titolo); DatiGrafico dati = new DatiGrafico(); DataView view = new DataView(datitab.table); view.RowFilter = ""; dati.dataTab = view.ToTable(false, this.setTableForChart()); dati.setHeight(ChartHeigth); dati.setWidth(204); Istogramma isto = new Istogramma(); document.InsertGrafico(isto.getGrafico(dati), 349, document.getLastPos() - 12); datitab.setY(document.getLastPos()); datitab.setX(document.getMargineLeft()); datitab.setCellSpace(0); Tabella tab = new Tabella(); if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") tab.HeaderFont = 8; //setta posizione tabella document.InsertTable(tab.getTabella(datitab)); float dim = datitab.GetRowDim() * (datitab.getNumRow() + 1); datitab = new DatiTabella(); datitab.table = set.Tables["IntermediarioTotale"]; datitab.setY(document.getLastPos() + dim); datitab.setX(document.getMargineLeft()); datitab.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true); datitab.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true); datitab.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true); document.InsertTable(tab.getTabella(datitab)); page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(360, document.getLastPos() + ChartHeigth - 38, 195, 23, 0, new RgbColor(232, 236, 237))); FormatNum format = new FormatNum(); ArrayList Labels = format.CreaCustom(dati.getValMax()); page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[0].ToString(), 360, document.getLastPos() + ChartHeigth - 29, 120, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black)); page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[1].ToString(), 360, document.getLastPos() + ChartHeigth - 29, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black)); page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[2].ToString(), 403, document.getLastPos() + ChartHeigth - 29, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black)); page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[3].ToString(), 448, document.getLastPos() + ChartHeigth - 29, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.Black)); page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(Labels[4].ToString(), 452, document.getLastPos() + ChartHeigth - 29, 100, 10, Globals.OpenTypeFontVerdana, 6, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black)); dim += datitab.GetRowDim() * datitab.getNumRow(); ///////// if (dim > ChartHeigth) document.setLastPos(dim); else document.setLastPos(ChartHeigth); } //======================================Gestisce il salto pagina============================================= public void writeSezioneTorta(DataThread dataThread) { DocumentPDF document = dataThread.DocumentPDF; DatiTabella datitab = new DatiTabella(); DataSetS31 set = (DataSetS31)dataThread.Data.DatiSezione; int MaxRow; float dim = 0; bool cut = true; DataTable vista; Tabella tab = new Tabella(); if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") tab.HeaderFont = 8; datitab.table = set.Tables["Intermediario"]; vista = datitab.table; int ChartHeigth = 140; datitab.setY(document.getLastPos()); datitab.setIsRet(); datitab.setIsLinee(1); datitab.setHeader(); datitab.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false); datitab.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false); datitab.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false); datitab.setCellSpace(0); //eventuali operazioni sul dataset //calcola se entra nella pagina altrimenti aggiunge una nuova pagina. In questa sezione il # di righe è fissato if (document.checkMargin(ChartHeigth)) document.addPage(); //aggiorna l'indice if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") document.setSezTitoloDiagnosi(dataThread.SezioneReport.Titolo); else document.setSezTitolo(dataThread.SezioneReport.Titolo); DatiGrafico dati = new DatiGrafico(); DataView view = new DataView(datitab.table); view.RowFilter = ""; dati.dataTab = view.ToTable(false, this.setTableForChart()); dati.setHeight(ChartHeigth); dati.setWidth(140); Torta isto = new Torta(); document.InsertGrafico(isto.getGrafico(dati), 360, document.getLastPos() - 11); ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage(); while (cut) { if (vista.Rows.Count != 0 && document.checkMargin(datitab.GetRowDim() * (vista.Rows.Count + 2))) { MaxRow = document.getWritableRow(23, false); vista.Columns.Add("ID"); int i = 0; foreach (DataRow myRow in vista.Rows) { if (i < MaxRow - 2) myRow["ID"] = 1; else myRow["ID"] = 2; i++; } view = new DataView(vista); view.RowFilter = ("ID = 1"); } else cut = false; datitab.table = view.ToTable(false, setTableForTable()); datitab.setY(document.getLastPos()); datitab.setX(document.getMargineLeft()); //setta posizione tabella document.InsertTable(tab.getTabella(datitab)); dim += datitab.GetRowDim() * (datitab.getNumRow() + 1); if (cut) { document.changePage(389, dim); document.nextPage(document.getMargineLeft()); datitab.setHeader(); dim = 0; view = new DataView(vista); view.RowFilter = ("ID = 2"); vista = view.ToTable(); vista.Columns.Remove(vista.Columns["ID"]); } } datitab = new DatiTabella(); datitab.table = set.Tables["IntermediarioTotale"]; datitab.setY(document.getLastPos() + dim); datitab.setX(document.getMargineLeft()); datitab.setCell(175, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true); datitab.setCell(90, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true); datitab.setCell(40, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdanaB, true); document.InsertTable(tab.getTabella(datitab)); dim += datitab.GetRowDim() * datitab.getNumRow(); if (dim > ChartHeigth) document.setLastPos(dim); else document.setLastPos(ChartHeigth); } //============================================================================================================= private string[] setTableForTable() { string[] Columns = new String[6]; //eventuali operazioni sul dataset Columns[0] = "Descrizione"; Columns[1] = "Controvalore"; Columns[2] = "Percentuale"; Columns[3] = "Red"; Columns[4] = "Green"; Columns[5] = "Blue"; return Columns; } private string[] setTableForChart() { string[] Columns = new String[4]; Columns[0] = "Controvalore"; Columns[1] = "Red"; Columns[2] = "Green"; Columns[3] = "Blue"; return Columns; } #endregion } }