using System; using System.Collections.Generic; using System.Text; using ceTe.DynamicPDF; using ceTe.DynamicPDF.Merger; using ceTe.DynamicPDF.Text; using System.Configuration; using System.Reflection; using System.IO; using ceTe.DynamicPDF.Imaging; using Dundas.Charting.WebControl; using System.Threading; using System.Globalization; using ceTe.DynamicPDF.PageElements; namespace Consulenza.PDFLettera { public enum TipoContratto { Old=0, Affluent=1, Private=2 } public enum TipoLettera { LetteraAccettazioneConAttivazioneSei, LetteraAccettazioneAttivazioneSeiPosticipata, RistampaLettera, ReportPeriodico } namespace LetteraAccompagnamento { public enum TipoReport { Diagnosi, Monitoraggio } } public abstract class LetteraBenvenuto { private byte[] data; public byte[] Data { get { return data; } } protected Image firma; protected Document lettera; protected int fontSize, idLettera; protected string path, nome, cognome, appellativo, nomeLettera, indirizzo, rete, testoSaluti, testoOggetto, testo; protected FormattedTextArea cliente, indirizzoBanca, oggetto, luogo, saluti, corpo; protected DateTime dataGenerazione; protected LetteraBenvenuto(string rete, int idLettera, string testo,string nome, string cognome,string indirizzo,bool ristampa,string appellativo,string obj,string firma) { Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); this.rete = rete; this.data = null; this.appellativo = appellativo; this.testoOggetto = obj; this.testoSaluti = firma; this.indirizzo = indirizzo; this.idLettera = idLettera; this.testo = testo; this.nome = nome; this.cognome = cognome; //this.codiceContratto = codiceContratto; this.dataGenerazione = DateTime.Now; PageDimensions dimensions = new PageDimensions(PageSize.A4, PageOrientation.Portrait); dimensions.BottomMargin = Convert.ToInt32(ConfigurationManager.AppSettings["MargineInfPX"]); dimensions.TopMargin = Convert.ToInt32(ConfigurationManager.AppSettings["MargineSupPX"]); dimensions.LeftMargin = Convert.ToInt32(ConfigurationManager.AppSettings["MargineSxPX"]); dimensions.RightMargin = Convert.ToInt32(ConfigurationManager.AppSettings["MargineDxPX"]); //Page page = new Page(dimensions); lettera = new Document(); // Lettura Template System.Reflection.Assembly thisExe; thisExe = System.Reflection.Assembly.GetExecutingAssembly(); System.IO.Stream file = null; if(rete.ToUpper() == "F") file = thisExe.GetManifestResourceStream("Consulenza.PDFLettera.TemplateBF.pdf"); else file = thisExe.GetManifestResourceStream("Consulenza.PDFLettera.templateSPI.pdf"); PdfDocument pp = new PdfDocument(file); Page page = new ImportedPage(pp.GetPage(1)); page.Dimensions = dimensions; // pg = new ImportedPage(pp.GetPage(1)); lettera.Pages.Add(page); fontSize = Convert.ToInt32(ConfigurationManager.AppSettings["fontSize"]); string[] valoriTextArea; valoriTextArea = ConfigurationManager.AppSettings["AreaClientePX"].Split(','); cliente = new FormattedTextArea(string.Empty, Convert.ToInt32(valoriTextArea[0]), Convert.ToInt32(valoriTextArea[1]), Convert.ToInt32(valoriTextArea[2]), Convert.ToInt32(valoriTextArea[3]), FontFamily.Times, fontSize, true); valoriTextArea = ConfigurationManager.AppSettings["AreaLuogoPX"].Split(','); luogo = new FormattedTextArea(string.Empty, Convert.ToInt32(valoriTextArea[0]), Convert.ToInt32(valoriTextArea[1]), Convert.ToInt32(valoriTextArea[2]), Convert.ToInt32(valoriTextArea[3]), FontFamily.Times, fontSize, true); valoriTextArea = ConfigurationManager.AppSettings["AreaOggettoPX"].Split(','); oggetto = new FormattedTextArea(string.Empty, Convert.ToInt32(valoriTextArea[0]), Convert.ToInt32(valoriTextArea[1]), Convert.ToInt32(valoriTextArea[2]), Convert.ToInt32(valoriTextArea[3]), FontFamily.Times, fontSize, true); valoriTextArea = ConfigurationManager.AppSettings["AreaCorpoPX"].Split(','); this.corpo = new FormattedTextArea(string.Empty, Convert.ToInt32(valoriTextArea[0]), Convert.ToInt32(valoriTextArea[1]), Convert.ToInt32(valoriTextArea[2]), Convert.ToInt32(valoriTextArea[3]), FontFamily.Times, fontSize, true); valoriTextArea = ConfigurationManager.AppSettings["AreaSalutiPX"].Split(','); this.saluti = new FormattedTextArea(string.Empty, Convert.ToInt32(valoriTextArea[0]), Convert.ToInt32(valoriTextArea[1]), Convert.ToInt32(valoriTextArea[2]), Convert.ToInt32(valoriTextArea[3]), FontFamily.Times, fontSize, true); // Fc 03/07/2015 // modifica "a mano" del valore impostato xFirma a 290 //int xFirma = (int)(saluti.X + (this.saluti.Width - 94) / 2); int xFirma = 290; int yFirmaF = (int)(saluti.Y - saluti.Height + 20); int yFirmaS = (int)(saluti.Y - saluti.Height + 10); if (rete.ToUpper() == "F") this.firma = GetImageByResourceName("Consulenza.PDFLettera.firma_Fideuram.jpg", xFirma, yFirmaF, (float)0.2); else this.firma = GetImageByResourceName("Consulenza.PDFLettera.firma_SanPaoloInvest.jpg", xFirma, yFirmaS, (float)0.2); oggetto.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Justify; corpo.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Justify; luogo.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Right; //this.appellativo = appellativo; //this.testoOggetto = obj; //this.testoSaluti = firma; //this.indirizzo = indirizzo; //this.idLettera = idLettera; //this.testo = testo; //this.nome = nome; //this.cognome = cognome; //cliente.Text = this.nome.ToString() + " " + this.cognome.ToString(); //corpo.Text = this.corpo.ToString(); //oggetto.Text = this.oggetto.ToString(); this.corpo.Text = ""; page.Elements.Add(this.corpo); page.Elements.Add(cliente); page.Elements.Add(oggetto); page.Elements.Add(luogo); ////page.Elements.Add(indirizzoBanca); page.Elements.Add(this.firma); page.Elements.Add(saluti); //** NOTA //FC 26/06/2015 // MOdificato per nuovo template //float xNota = 0; //float yNota = 712;//709 float xNota = 27; float yNota = 720; float wNota = 150; page.Elements.Add(new ceTe.DynamicPDF.PageElements.Line(xNota, yNota, xNota + wNota, yNota, 0.5F, RgbColor.Black)); page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label( "¹Il private banker è un professionista della consulenza finanziaria, previdenziale e assicurativa, iscritto all’Albo Unico dei Consulenti Finanziari." , xNota , yNota+3 ,480 ,30 , new OpenTypeFont("times.ttf") , 9 )); //** NOTA path = ConfigurationManager.AppSettings["pathScritturaLettera"]; } public void writePDF() { data = lettera.Draw(); //DECOMMENTARE PER EFFETTUARE LE PROVE, SALVA LA LETTERA SUL PERCORSO //SPECIFICATO SU pathScritturaLettera //lettera.Draw(path + nomeLettera + ".pdf"); } protected static Image GetImageByResourceName(string resourceName,int X,int Y,float ratio) { Assembly a = Assembly.GetExecutingAssembly(); try { Stream stream = a.GetManifestResourceStream(resourceName); Image gif = new Image(stream,X,Y,ratio); return gif; } catch{ return null; } } protected abstract void settaCampi(); } }