3188 lines
130 KiB
C#
3188 lines
130 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Text;
|
||
using ceTe.DynamicPDF;
|
||
using PDFGenerator.BusinessLayer;
|
||
using System.IO;
|
||
using System.Collections;
|
||
using PDFGenerator.BusinessLayer.DataSection;
|
||
using ceTe.DynamicPDF.Merger;
|
||
using Dundas.Charting.WebControl;
|
||
using ceTe.DynamicPDF.PageElements;
|
||
using ceTe.DynamicPDF.Text;
|
||
using System.Data;
|
||
using PDFGenerator.Presentation.TemplateGenerator;
|
||
using ContrattoSei.Utilities;
|
||
using System.Threading;
|
||
using PDFGenerator.BusinessLayer.Utils;
|
||
using System.Linq;
|
||
|
||
namespace PDFGenerator
|
||
{
|
||
public class DocumentPDF
|
||
{
|
||
|
||
private string _tipologia;
|
||
ArrayList _index;
|
||
ArrayList _core;
|
||
int _indexPage;
|
||
int _corePage;
|
||
int _currentPage;
|
||
float _margineUP;
|
||
float _pageHeight;
|
||
float _margineDOWN;
|
||
float _margineLEFT;
|
||
float _margineRIGHT;
|
||
float _writableYPot;
|
||
float _indiceY;
|
||
float _writableY;
|
||
int _sectionSpace;
|
||
int _numlastpage;
|
||
// bool _navigatore;
|
||
bool _glossario;
|
||
//bool _copertina;
|
||
bool _activeIndex;
|
||
MergeDocument _documentoFinale;
|
||
DataSetIndice _strutturaIndice;
|
||
MemoryStream _imgGrafico;
|
||
int _chapterNum;
|
||
int _sectionNum;
|
||
private Document _document;
|
||
private ReportType _reportType;
|
||
DataThread _dataThread;
|
||
private OpenTypeFont _verdana, _verdanaBold, _verdanaItalic, _verdanaBoldItalic;
|
||
private ImportedPage _page, _indice, _backPage;
|
||
private float _writableYold;
|
||
private byte[] _data;
|
||
private string _banca;
|
||
private string _notaPieDiPagina;
|
||
/// <summary>
|
||
/// indica se la nota a pi<70> di pagina <20> presente.
|
||
/// </summary>
|
||
private bool _flagnotaPieDiPagina;
|
||
//private List<Nota> _note;
|
||
private bool _saltoPagina;
|
||
private string _AsteriscoVarProxato;
|
||
private string _AsteriscoGradoCopertura;
|
||
private int _numNotePiePaginaVarProxato = 0;
|
||
|
||
private ListaNote _note = new ListaNote();
|
||
private float _ynotapiedipagina = 740;
|
||
|
||
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
|
||
private TemplateProvider _templateProvider;
|
||
|
||
//MIFID2 20180523 Inserita nuova propriet<65> che tiene traccia dell'ultima sezione che la imposta nella writeSezione()
|
||
// utile per la sua sezione successiva (es.: S179 - S180)
|
||
|
||
public string LastSectionCheckIn { get; set; }
|
||
|
||
//--MIFID2
|
||
|
||
//MIFID2 20180529 Inserita nuova propriet<65> che tiene il conteggio delle aree monitorate (cio<69> delle aree che saranno stampate dalle sezioni S43 e S43BIS)
|
||
|
||
public int AreasCount { get; set; }
|
||
|
||
public DataTable Areas { get; set; }
|
||
|
||
// Serve per memorizzare le posizioni in cui inserire le note per le sezioni S43 e S43BIS, in Monitoraggio
|
||
public DataTable DocumentNotes { get; set; }
|
||
|
||
//--MIFID2
|
||
|
||
public DocumentPDF(DataThread dataThread, string tipoReport)
|
||
{
|
||
#region region
|
||
_dataThread = dataThread;
|
||
|
||
/****** Fix Direct Bank 09/03/2023 - Pino **********/
|
||
if (!dataThread.Periodico)
|
||
{
|
||
BusinessLayer.Utils.TemplateProvider._dataThread = dataThread;
|
||
|
||
BusinessLayer.Utils.TemplateProvider.idReportDiagnosi = dataThread.ReportsType.Find(f => f.Descrizione == "Diagnosi").IdModello;
|
||
BusinessLayer.Utils.TemplateProvider.CF = dataThread.CodiceFiscale;
|
||
}
|
||
else
|
||
BusinessLayer.Utils.TemplateProvider.idReportDiagnosi = dataThread.ReportsType.Find(f => f.Descrizione == "Monitoraggio").IdModello;
|
||
|
||
/***************************************************/
|
||
|
||
logger.Info("DocumentPDF Periodico: " + dataThread.Periodico);
|
||
logger.Info("DocumentPDF idReportDiagnosi: " + BusinessLayer.Utils.TemplateProvider.idReportDiagnosi);
|
||
|
||
_templateProvider = new BusinessLayer.Utils.TemplateProvider((int)dataThread.TipoContratto, dataThread.Rete, dataThread.Periodico);
|
||
_index = new ArrayList();
|
||
_core = new ArrayList();
|
||
_indexPage = 0;
|
||
_corePage = 0;
|
||
_currentPage = 0;
|
||
_margineUP = 160;
|
||
_pageHeight = 841.9F;
|
||
_margineDOWN = 105;
|
||
_margineLEFT = 42;
|
||
_margineRIGHT = 259;
|
||
_writableYPot = 0;
|
||
_sectionSpace = 30; //30; // Spazio tra le sezioni da stampare
|
||
_numlastpage = -1;
|
||
// _navigatore = false;
|
||
_glossario = false;
|
||
// _copertina = false;
|
||
_activeIndex = false;
|
||
_strutturaIndice = new DataSetIndice();
|
||
_imgGrafico = new System.IO.MemoryStream();
|
||
_documentoFinale = new MergeDocument();
|
||
_chapterNum = 0;
|
||
_sectionNum = 0;
|
||
//_data = null;
|
||
_document = new Document();
|
||
_reportType = _dataThread.ReportsType.Find(delegate (ReportType r) { return r.Descrizione.ToUpper() == tipoReport; });
|
||
_document.Title = _reportType.Descrizione;
|
||
_document.CompressionLevel = 9;
|
||
_AsteriscoVarProxato = "";
|
||
_AsteriscoGradoCopertura = "";
|
||
//MIFID2 20180523
|
||
LastSectionCheckIn = "";
|
||
//--MIFID2
|
||
//MIFID2 20180529
|
||
AreasCount = 0;
|
||
Areas = new DataTable();
|
||
DocumentNotes = new DataTable();
|
||
DocumentNotes.Columns.Add("Area", typeof(string));
|
||
DocumentNotes.Columns.Add("Posizione", typeof(float));
|
||
DocumentNotes.Columns.Add("Pagina", typeof(Int16));
|
||
|
||
|
||
|
||
//--MIFID2
|
||
|
||
string licenza = UtilityManager.getAppSetting("Licenza");
|
||
try
|
||
{
|
||
bool isValid = ceTe.DynamicPDF.Document.AddLicense(licenza);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
try
|
||
{
|
||
logger.Error(string.Concat(ex.Message, " ", dataThread.CodiceFiscale));
|
||
}
|
||
catch { }
|
||
throw;
|
||
}
|
||
// Create a standard security object
|
||
StandardSecurity security = new StandardSecurity();
|
||
|
||
// Set the permissions on that security object
|
||
//security.AllowPrint = false;
|
||
security.AllowCopy = false;
|
||
security.AllowEdit = false;
|
||
|
||
// Add the security object to the document
|
||
_document.Security = security;
|
||
_document.PdfVersion = PdfVersion.v1_4;
|
||
_document.PdfXVersion = PdfXVersion.PDF_X_3_2003;
|
||
|
||
System.Reflection.Assembly thisExe;
|
||
thisExe = System.Reflection.Assembly.GetExecutingAssembly();
|
||
string relativePath = UtilityManager.getAppSetting("ICCprofile");
|
||
System.IO.Stream file = thisExe.GetManifestResourceStream(relativePath);
|
||
|
||
|
||
IccProfile iccProfile = new IccProfile(file);
|
||
string configurationPath1 = UtilityManager.getAppSetting("ICCconfiguration");
|
||
string configurationPath2 = UtilityManager.getAppSetting("ICCconfiguration1");
|
||
string configurationPath3 = UtilityManager.getAppSetting("ICCconfiguration2");
|
||
string configurationPath4 = UtilityManager.getAppSetting("ICCconfiguration3");
|
||
OutputIntent outputIntent = new OutputIntent(configurationPath1, configurationPath2, configurationPath3, configurationPath4, iccProfile);
|
||
_document.OutputIntents.Add(outputIntent); // Patryk Prepress
|
||
_document.Trapped = Trapped.False; // Patryk Prepress
|
||
_writableY = _margineUP;
|
||
|
||
//Creo il PDF
|
||
this.createFont();
|
||
this.addPage();
|
||
#endregion
|
||
}
|
||
|
||
private void SetTemplate(ImportedPage p)
|
||
{
|
||
/*** Fix Direct Banck 12/03/2023 - Pino ***/
|
||
//p.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("REPORT " + _document.Title.ToUpper(), 38, 43, 250, 12, _verdanaBold, 11, _templateProvider.ChapterFontColor));//ceTe.DynamicPDF.CmykColor.Red
|
||
if (!_dataThread.Periodico)
|
||
{
|
||
if (_dataThread.ReportsType.Find(f => f.Descrizione.ToUpper() == "DIAGNOSI").IdModello == 6)
|
||
p.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("REPORT DI BENVENUTO", 38, 43, 250, 12, _verdanaBold, 11, ceTe.DynamicPDF.CmykColor.Green));//ceTe.DynamicPDF.CmykColor.Red
|
||
else
|
||
p.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("REPORT " + _document.Title.ToUpper(), 38, 43, 250, 12, _verdanaBold, 11, _templateProvider.ChapterFontColor));//ceTe.DynamicPDF.CmykColor.Red
|
||
}
|
||
else
|
||
p.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("REPORT " + _document.Title.ToUpper(), 38, 43, 250, 12, _verdanaBold, 11, _templateProvider.ChapterFontColor));//ceTe.DynamicPDF.CmykColor.Red
|
||
|
||
/******************************************/
|
||
|
||
|
||
p.Elements.Add(new PageNumberingLabel("pagina %%SP%% di %%ST%%", 0, 820, 542, 12, _verdana, 7, ceTe.DynamicPDF.TextAlign.Right));
|
||
}
|
||
|
||
public void insertCliente()
|
||
{
|
||
this.setPageFooterNomeCliente(_page);
|
||
}
|
||
|
||
public ImportedPage getCurrentPage()
|
||
{
|
||
return _page;
|
||
}
|
||
|
||
//MIFID2 20180529
|
||
public ImportedPage getPageAt(int index)
|
||
{
|
||
return (ImportedPage)_core[index];
|
||
}
|
||
//--MIFID2
|
||
|
||
public float getSectionSpace()
|
||
{
|
||
return _sectionSpace;
|
||
}
|
||
|
||
private void createFont()
|
||
{
|
||
// Create a TrueType font class.
|
||
_verdana = Globals.OpenTypeFontVerdana;
|
||
_verdanaBold = Globals.OpenTypeFontVerdanaB;
|
||
_verdanaItalic = Globals.OpenTypeFontVerdanaZ;
|
||
_verdanaBoldItalic = Globals.OpenTypeFontVerdanaZ;
|
||
}
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// Stampo le note aggiunte alla pagina (document).
|
||
/// Stampo solamente quelle con posizionamento a "Pi<50>DiPagina" e Stato "DaStampare"
|
||
///
|
||
/// Questa funzione <20> richiamata dal metodo addPage. A differenza dell'altro overload di StampaNote,questo <20> richiamato quando non c'<27> salto pagina della tabella.
|
||
/// </summary>
|
||
public void StampaNote()
|
||
{
|
||
// stampo le note a pi<70> di pagina prima di aggiungerne una nuova.
|
||
|
||
//Ordinamento
|
||
_note.Sort(delegate (Nota nota, Nota nota2) { return nota.NumeroAsterisco.CompareTo(nota2.NumeroAsterisco); });
|
||
_note.Reverse();
|
||
|
||
// distinct sul numero di asterischi.
|
||
ListaNote newList = new ListaNote();
|
||
|
||
foreach (Nota objNota in _note)
|
||
{
|
||
if (newList.Find(delegate (Nota nota) { return nota.NumeroAsterisco == objNota.NumeroAsterisco; }) == null)
|
||
newList.Insert(objNota);
|
||
}
|
||
_note = newList;
|
||
|
||
|
||
foreach (Nota objNota in _note.FindAll(delegate (Nota t) { return t.Posizionamento == Nota.TipologiaPosizionamento.PieDiPagina && t.Stato == Nota.StatoNota.DaStampare; }))
|
||
{
|
||
// Per ora abbiamo solo note che sono o inferiori a 200 caratteri o di 254 (nota var proxato)
|
||
// se la lunghezza delle note a pi<70> di pagina dovesse cambiare questa gestione va rivista.
|
||
|
||
if (objNota.Testo.Length > 200)
|
||
_ynotapiedipagina -= 10;
|
||
|
||
writeText(42, _ynotapiedipagina, objNota.Testo, 7, 512);
|
||
|
||
objNota.Stato = Nota.StatoNota.Stampata; // Imposto la nota come gi<67> stampata
|
||
|
||
if (objNota.Testo.Length < 200)
|
||
_ynotapiedipagina -= 12;
|
||
else
|
||
_ynotapiedipagina -= 22;
|
||
}
|
||
}
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// Stampo le note aggiunte alla pagina (document).
|
||
/// Stampo solamente quelle con posizionamento a Pi<50>DiPagina
|
||
/// Stampo le note delle tabelle che stanno effettuando il saltopagina.
|
||
///
|
||
/// Qusta funzione <20> richiamata solo quando una tabella sta effettuando il "saltopagina" non imposto quindi lo Stato della Nota su "Stampata".
|
||
/// </summary>
|
||
/// <param name="idtabella"></param>
|
||
public void StampaNote(string idtabella)
|
||
{
|
||
|
||
// stampo le note a pi<70> di pagina prima di aggiungerne una nuova.
|
||
|
||
//Ordinamento
|
||
_note.Sort(delegate (Nota nota, Nota nota2) { return nota.NumeroAsterisco.CompareTo(nota2.NumeroAsterisco); });
|
||
_note.Reverse();
|
||
|
||
// distinct sul numero di asterischi.
|
||
ListaNote newList = new ListaNote();
|
||
|
||
foreach (Nota objNota in _note)
|
||
{
|
||
if (newList.Find(delegate (Nota nota) { return nota.NumeroAsterisco == objNota.NumeroAsterisco; }) == null)
|
||
newList.Insert(objNota);
|
||
}
|
||
_note = newList;
|
||
|
||
foreach (Nota objNota in _note.FindAll(delegate (Nota t) { return t.Posizionamento == Nota.TipologiaPosizionamento.PieDiPagina; }))
|
||
{
|
||
// Per ora abbiamo solo note che sono o inferiori a 200 caratteri o di 254 (nota var proxato)
|
||
// se la lunghezza delle note a pi<70> di pagina dovesse cambiare questa gestione va rivista.
|
||
|
||
if (objNota.Testo.Length > 200)
|
||
_ynotapiedipagina -= 10;
|
||
|
||
writeText(42, _ynotapiedipagina, objNota.Testo, 7, 512);
|
||
|
||
if (objNota.Testo.Length < 200)
|
||
_ynotapiedipagina -= 12;
|
||
else
|
||
_ynotapiedipagina -= 22;
|
||
|
||
}
|
||
|
||
}
|
||
|
||
public void AddDocumentNote(string area, float pos, int pag)
|
||
{
|
||
|
||
var dr = DocumentNotes.AsEnumerable().Where(x => x.Field<string>("Area").ToUpper().Equals(area.ToUpper()) && x.Field<float>("Posizione") == 0 && x.Field<Int16>("Pagina") == pag);
|
||
|
||
int i = 0;
|
||
foreach (var item in dr)
|
||
{
|
||
item["Posizione"] = pos;
|
||
i++;
|
||
}
|
||
|
||
if (i == 0)
|
||
this.DocumentNotes.Rows.Add(area, pos, pag);
|
||
|
||
}
|
||
|
||
|
||
public void WriteNote(string note, Boolean isSavingMap)
|
||
{
|
||
|
||
int minIndex = Convert.ToInt16(this.DocumentNotes.Compute("MIN([Pagina])", ""));
|
||
int maxIndex = Convert.ToInt16(this.DocumentNotes.Compute("MAX([Pagina])", ""));
|
||
|
||
/**************** "Modifica del dimensionamento della posizione per la nota statica richiesta 22/02/2021 - Pino" **********************/
|
||
float bottomPos = 0;
|
||
|
||
if (note.Length > 482)
|
||
bottomPos = 700; //688; ////710; originale
|
||
else
|
||
bottomPos = 710;
|
||
/**************************************************************************************************************************************/
|
||
float posNota = 500; //710;
|
||
if (isSavingMap)
|
||
{
|
||
bottomPos = 700;
|
||
posNota = 700;
|
||
}
|
||
ImportedPage p;
|
||
|
||
for (var i = minIndex; i <= maxIndex; i++)
|
||
{
|
||
p = this.getPageAt(i - 1);
|
||
|
||
var dv = this.DocumentNotes.AsEnumerable().Where(d => d.Field<Int16>("Pagina") == i).AsDataView();
|
||
|
||
if (dv.Count == 0 || dv.Count > 1)
|
||
posNota = bottomPos;
|
||
else if (dv.Count == 1)
|
||
posNota = (float)dv.ToTable().Rows[0]["Posizione"] == 0 ? bottomPos : (float)dv.ToTable().Rows[0]["Posizione"] - 8;
|
||
|
||
/**************** "Modifica del dimensionamento della posizione per la nota statica richiesta 22/02/2021 - Pino" **********************/
|
||
//FormattedTextArea text = new FormattedTextArea(note, this.getMargineLeft(), posNota, 510, 50, new ceTe.DynamicPDF.FontFamily("pipp", Globals.OpenTypeFontVerdana, Globals.OpenTypeFontVerdanaB, Globals.OpenTypeFontVerdanaZ, Globals.OpenTypeFontVerdanaZ), 7, false);
|
||
FormattedTextArea text = new FormattedTextArea(note, this.getMargineLeft(), posNota, 510, 50, new ceTe.DynamicPDF.FontFamily("pipp", Globals.OpenTypeFontVerdana, Globals.OpenTypeFontVerdanaB, Globals.OpenTypeFontVerdanaZ, Globals.OpenTypeFontVerdanaZ), 6, false);
|
||
/**************************************************************************************************************************************/
|
||
text.Height = text.GetRequiredHeight();
|
||
text.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Justify;
|
||
|
||
p.Elements.Add(text);
|
||
}
|
||
if (isSavingMap)
|
||
{
|
||
String pathImg = WebConfigParameter.getParameter("SavingMapPath");
|
||
//String pathImg1 = WebConfigParameter.getParameter("APCPath");
|
||
Image img = new Image(pathImg, this.getMargineLeft(), posNota + 38);
|
||
//// Test per APC Andrea
|
||
//Image img1 = new Image(pathImg1, this.getMargineLeft() + 150, posNota + 38, 0.035F);
|
||
//FormattedTextArea textAPC = new FormattedTextArea("«APC» Investimenti finanziari", this.getMargineLeft() + 170, posNota + 40, 200, 10, new ceTe.DynamicPDF.FontFamily("pipp", Globals.OpenTypeFontVerdana, Globals.OpenTypeFontVerdanaB, Globals.OpenTypeFontVerdanaZ, Globals.OpenTypeFontVerdanaZ), 7, false);
|
||
////
|
||
FormattedTextArea textSM = new FormattedTextArea("Servizio Saving Map attivo.", this.getMargineLeft() + 20, posNota + 40, 100, 10, new ceTe.DynamicPDF.FontFamily("pipp", Globals.OpenTypeFontVerdana, Globals.OpenTypeFontVerdanaB, Globals.OpenTypeFontVerdanaZ, Globals.OpenTypeFontVerdanaZ), 7, false);
|
||
p = this.getPageAt(maxIndex - 1);
|
||
p.Elements.Add(img);
|
||
p.Elements.Add(textSM);
|
||
//p.Elements.Add(img1);
|
||
//p.Elements.Add(textAPC);
|
||
}
|
||
|
||
this.DocumentNotes = new DataTable();
|
||
}
|
||
public void WriteNote2(string note, Boolean isSavingMap, Boolean isAPC103)
|
||
{
|
||
|
||
int minIndex = Convert.ToInt16(this.DocumentNotes.Compute("MIN([Pagina])", ""));
|
||
int maxIndex = Convert.ToInt16(this.DocumentNotes.Compute("MAX([Pagina])", ""));
|
||
|
||
/**************** "Modifica del dimensionamento della posizione per la nota statica richiesta 22/02/2021 - Pino" **********************/
|
||
float bottomPos = 0;
|
||
|
||
if (note.Length > 482)
|
||
bottomPos = 700; //688; ////710; originale
|
||
else
|
||
bottomPos = 710;
|
||
/**************************************************************************************************************************************/
|
||
float posNota = 500; //710;
|
||
if (isSavingMap)
|
||
{
|
||
bottomPos = 700;
|
||
posNota = 700;
|
||
}
|
||
ImportedPage p;
|
||
|
||
for (var i = minIndex; i <= maxIndex; i++)
|
||
{
|
||
p = this.getPageAt(i - 1);
|
||
|
||
var dv = this.DocumentNotes.AsEnumerable().Where(d => d.Field<Int16>("Pagina") == i).AsDataView();
|
||
|
||
if (dv.Count == 0 || dv.Count > 1)
|
||
posNota = bottomPos - 10;
|
||
else if (dv.Count == 1)
|
||
posNota = (float)dv.ToTable().Rows[0]["Posizione"] == 0 ? bottomPos : (float)dv.ToTable().Rows[0]["Posizione"];
|
||
|
||
/**************** "Modifica del dimensionamento della posizione per la nota statica richiesta 22/02/2021 - Pino" **********************/
|
||
//FormattedTextArea text = new FormattedTextArea(note, this.getMargineLeft(), posNota, 510, 50, new ceTe.DynamicPDF.FontFamily("pipp", Globals.OpenTypeFontVerdana, Globals.OpenTypeFontVerdanaB, Globals.OpenTypeFontVerdanaZ, Globals.OpenTypeFontVerdanaZ), 7, false);
|
||
FormattedTextArea text = new FormattedTextArea(note, this.getMargineLeft(), posNota, 510, 50, new ceTe.DynamicPDF.FontFamily("pipp", Globals.OpenTypeFontVerdana, Globals.OpenTypeFontVerdanaB, Globals.OpenTypeFontVerdanaZ, Globals.OpenTypeFontVerdanaZ), 6, false);
|
||
/**************************************************************************************************************************************/
|
||
text.Height = text.GetRequiredHeight();
|
||
text.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Justify;
|
||
|
||
p.Elements.Add(text);
|
||
}
|
||
if (isSavingMap)
|
||
{
|
||
String pathImg = WebConfigParameter.getParameter("SavingMapPath");
|
||
//String pathImg1 = WebConfigParameter.getParameter("APCPath");
|
||
Image img = new Image(pathImg, this.getMargineLeft(), posNota + 38);
|
||
//// Test per APC Andrea
|
||
//Image img1 = new Image(pathImg1, this.getMargineLeft() + 150, posNota + 38, 0.035F);
|
||
//FormattedTextArea textAPC = new FormattedTextArea("«APC» Investimenti finanziari", this.getMargineLeft() + 170, posNota + 40, 200, 10, new ceTe.DynamicPDF.FontFamily("pipp", Globals.OpenTypeFontVerdana, Globals.OpenTypeFontVerdanaB, Globals.OpenTypeFontVerdanaZ, Globals.OpenTypeFontVerdanaZ), 7, false);
|
||
////
|
||
FormattedTextArea textSM = new FormattedTextArea("Servizio Saving Map attivo.", this.getMargineLeft() + 20, posNota + 40, 100, 10, new ceTe.DynamicPDF.FontFamily("pipp", Globals.OpenTypeFontVerdana, Globals.OpenTypeFontVerdanaB, Globals.OpenTypeFontVerdanaZ, Globals.OpenTypeFontVerdanaZ), 7, false);
|
||
p = this.getPageAt(maxIndex - 1);
|
||
p.Elements.Add(img);
|
||
p.Elements.Add(textSM);
|
||
//p.Elements.Add(img1);
|
||
//p.Elements.Add(textAPC);
|
||
}
|
||
if (isAPC103 && isSavingMap)
|
||
{
|
||
String pathImg1 = WebConfigParameter.getParameter("APCPath");
|
||
|
||
Image img1 = new Image(pathImg1, this.getMargineLeft() + 150, posNota + 38, 0.035F);
|
||
FormattedTextArea textAPC = new FormattedTextArea("«APC» Investimenti finanziari", this.getMargineLeft() + 170, posNota + 40, 200, 10, new ceTe.DynamicPDF.FontFamily("pipp", Globals.OpenTypeFontVerdana, Globals.OpenTypeFontVerdanaB, Globals.OpenTypeFontVerdanaZ, Globals.OpenTypeFontVerdanaZ), 7, false);
|
||
p = this.getPageAt(maxIndex - 1);
|
||
p.Elements.Add(img1);
|
||
p.Elements.Add(textAPC);
|
||
}
|
||
if (isAPC103 && !isSavingMap)
|
||
{
|
||
String pathImg1 = WebConfigParameter.getParameter("APCPath");
|
||
|
||
Image img1 = new Image(pathImg1, this.getMargineLeft() + 20, posNota + 38, 0.035F);
|
||
FormattedTextArea textAPC = new FormattedTextArea("«APC» Investimenti finanziari", this.getMargineLeft() + 40, posNota + 40, 200, 10, new ceTe.DynamicPDF.FontFamily("pipp", Globals.OpenTypeFontVerdana, Globals.OpenTypeFontVerdanaB, Globals.OpenTypeFontVerdanaZ, Globals.OpenTypeFontVerdanaZ), 7, false);
|
||
p = this.getPageAt(maxIndex - 1);
|
||
p.Elements.Add(img1);
|
||
p.Elements.Add(textAPC);
|
||
}
|
||
this.DocumentNotes = new DataTable();
|
||
}
|
||
|
||
private void addGlossario()
|
||
{
|
||
int prof = (_dataThread.IsProffesionalClient) ? 1 : 0;
|
||
bool adeguato = Convert.ToBoolean(_dataThread.clienteAdeguato(_dataThread.Rete, _dataThread.CodiceFiscale, _dataThread.Periodico));
|
||
/************* Test frda tagliere vale solo per test****************/
|
||
//adeguato = true;
|
||
/**********************************************************************/
|
||
|
||
TemplateGenerator tg = new TemplateGenerator();
|
||
if (!_dataThread.Periodico)
|
||
{
|
||
if (_dataThread.ReportsType.Find(f => f.Descrizione.ToUpper() == "DIAGNOSI").IdModello == 6)
|
||
{
|
||
tg.ColorHeaderDB = "green";
|
||
}
|
||
}
|
||
// MIFID2 20180417 il glossario <20> generato dinamicamente, quindi non pu<70> essere pi<70> restituito come array di pagine, ma come lista
|
||
//ImportedPage[] glox = tg.getGlossario(_dataThread.TipoReport.ToUpper(), _dataThread.Rete.ToUpper(), _dataThread.TipoContratto, _dataThread.Periodico, _dataThread.Flagnqp, _dataThread.Flagprlrde, prof.ToString());
|
||
// OVERRIDE getGlossario, viene passato il _dataThread
|
||
|
||
/***** Fix - Aggiunto parametro in input per la gestione del glossario per FD 09/05/2023 - Pino *****/
|
||
int _idModello = 0;
|
||
if (_dataThread.ReportsType.Exists(f => f.IdModello == 6))
|
||
_idModello = 6;
|
||
|
||
List<ImportedPage> glox = tg.getGlossario(_dataThread.TipoReport.ToUpper(), _dataThread.Rete.ToUpper(), _dataThread.CodiceFiscale, _dataThread.TipoContratto, _dataThread.Periodico, _idModello, _dataThread.Flagnqp, _dataThread.Flagprlrde, prof.ToString(), adeguato);
|
||
//List<ImportedPage> glox = tg.getGlossario(_dataThread.TipoReport.ToUpper(), _dataThread.Rete.ToUpper(), _dataThread.CodiceFiscale, _dataThread.TipoContratto, _dataThread.Periodico, _dataThread.Flagnqp, _dataThread.Flagprlrde, prof.ToString(), adeguato);
|
||
/****************************************************************************************************/
|
||
//List<ImportedPage> glox = tg.getGlossario(new DocumentPDF(_dataThread, _dataThread.TipoReport), _dataThread.TipoReport.ToUpper(), _dataThread.Rete.ToUpper(), _dataThread.TipoContratto, _dataThread.Periodico, _dataThread.Flagnqp, _dataThread.Flagprlrde, prof.ToString());
|
||
//--MIFID2
|
||
|
||
foreach (ImportedPage p in glox)
|
||
{
|
||
this.SetTemplate(p);
|
||
this.setPageFooter(p);
|
||
this.setPageFooterNomeCliente(p);
|
||
_document.Pages.Add(p);
|
||
}
|
||
|
||
//PdfDocument pp1 = new PdfDocument(file);
|
||
//ImportedPage pg1 = tg.getAvvertenze(_dataThread.TipoReport.ToUpper(), _dataThread.Rete.ToUpper(), _dataThread.TipoContratto);//= new ImportedPage(pp1.GetPage(1));
|
||
|
||
//this.SetTemplate(pg1);
|
||
//this.setPageFooter(pg1);
|
||
//this.setPageFooterNomeCliente(pg1);
|
||
//_document.Pages.Add(pg1);
|
||
|
||
_index.Add(_indice);
|
||
_indiceY = _margineUP + 30;
|
||
_activeIndex = true;
|
||
|
||
_indexPage++;
|
||
_indiceY = _margineUP;
|
||
}
|
||
|
||
//private void addGlossarioOriginale()
|
||
//{
|
||
// int prof = (_dataThread.IsProffesionalClient) ? 1 : 0;
|
||
// TemplateGenerator tg = new TemplateGenerator();
|
||
// ImportedPage[] glox = tg.getGlossario(_dataThread.TipoReport.ToUpper(), _dataThread.Rete.ToUpper(), _dataThread.TipoContratto, _dataThread.Periodico, _dataThread.Flagnqp, _dataThread.Flagprlrde, prof.ToString());
|
||
|
||
// foreach (ImportedPage p in glox)
|
||
// {
|
||
// this.SetTemplate(p);
|
||
// this.setPageFooter(p);
|
||
// this.setPageFooterNomeCliente(p);
|
||
// _document.Pages.Add(p);
|
||
// }
|
||
|
||
// #region vecchio glossario
|
||
// //string pdfRelativePath = null;
|
||
// ////V Provvisorio in attesa di montare la nuova gestione del glossario anche per diagnosi
|
||
// //ImportedPage temp = null;
|
||
|
||
// //if (_dataThread.Rete.ToUpper() == "F")
|
||
// // if(_dataThread.TipoReport.ToUpper() == "DIAGNOSI")
|
||
// // pdfRelativePath = UtilityManager.getAppSetting("GlossarioBF");
|
||
// // else {
|
||
|
||
// // temp = tg.getGlossario(_dataThread.TipoReport.ToUpper(), _dataThread.Rete.ToUpper());
|
||
|
||
// // }
|
||
// // //pdfRelativePath = UtilityManager.getAppSetting("GlossarioBF_Monitoraggio");
|
||
// //else
|
||
// // if (_dataThread.TipoReport.ToUpper() == "DIAGNOSI")
|
||
// // pdfRelativePath = UtilityManager.getAppSetting("GlossarioSP");
|
||
// // else
|
||
// // {
|
||
|
||
// // temp = tg.getGlossario(_dataThread.TipoReport.ToUpper(), _dataThread.Rete.ToUpper());
|
||
// // }
|
||
// // //pdfRelativePath = UtilityManager.getAppSetting("GlossarioSP_Monitoraggio");
|
||
// //System.Reflection.Assembly thisExe;
|
||
// //System.IO.Stream file = null;
|
||
// //if (pdfRelativePath != null) //GLOSSARIO DIAGNOSI Lo recupero dal template statico
|
||
// //{
|
||
|
||
// // thisExe = System.Reflection.Assembly.GetExecutingAssembly();
|
||
|
||
// // file = thisExe.GetManifestResourceStream(pdfRelativePath);
|
||
|
||
// // //PdfDocument PPP = new PdfDocument("C:\\Templ_avvertenzeBF.pdf");
|
||
// // PdfDocument pp = new PdfDocument(file);
|
||
|
||
// // ImportedPage pg = null;
|
||
// // for (int _indicePagina = 1; _indicePagina <= pp.Pages.Count; _indicePagina++)
|
||
// // {
|
||
// // pg = new ImportedPage(pp.GetPage(_indicePagina));
|
||
// // this.SetTemplate(pg);
|
||
// // this.setPageFooter(pg);
|
||
// // this.setPageFooterNomeCliente(pg);
|
||
|
||
// // _document.Pages.Add(pg);
|
||
// // }
|
||
// //}
|
||
// //else //Glossario Monitoraggio generato dinamicamente
|
||
// //{
|
||
// // ImportedPage pg = temp;
|
||
|
||
// // this.SetTemplate(pg);
|
||
// // this.setPageFooter(pg);
|
||
// // this.setPageFooterNomeCliente(pg);
|
||
// // _document.Pages.Add(pg);
|
||
|
||
|
||
// //}
|
||
|
||
|
||
|
||
// //thisExe = System.Reflection.Assembly.GetExecutingAssembly();
|
||
|
||
// //if (_dataThread.Rete == "F")
|
||
// // pdfRelativePath = UtilityManager.getAppSetting("TemplateAvvertenzeBF");
|
||
// //else
|
||
// // pdfRelativePath = UtilityManager.getAppSetting("TemplateAvvertenzeSP");
|
||
|
||
// //file = thisExe.GetManifestResourceStream(pdfRelativePath);
|
||
|
||
// #endregion
|
||
|
||
|
||
// //PdfDocument pp1 = new PdfDocument(file);
|
||
// ImportedPage pg1 = tg.getAvvertenze(_dataThread.TipoReport.ToUpper(), _dataThread.Rete.ToUpper(), _dataThread.TipoContratto);//= new ImportedPage(pp1.GetPage(1));
|
||
|
||
// this.SetTemplate(pg1);
|
||
// this.setPageFooter(pg1);
|
||
// this.setPageFooterNomeCliente(pg1);
|
||
// _document.Pages.Add(pg1);
|
||
|
||
|
||
// _index.Add(_indice);
|
||
// _indiceY = _margineUP + 30;
|
||
// _activeIndex = true;
|
||
|
||
// _indexPage++;
|
||
// _indiceY = _margineUP;
|
||
|
||
|
||
|
||
//}
|
||
|
||
//private void addNavigatore()
|
||
//{
|
||
// string startDir = UtilityManager.getAppSetting("Path");
|
||
// string pdfRelativePath;
|
||
|
||
// if (_rete == "F")
|
||
// switch (_tipoReport.Trim())
|
||
// {
|
||
// case "DIAGNOSI":
|
||
// pdfRelativePath = UtilityManager.getAppSetting("NavigatoreBFDiagnosi");
|
||
// break;
|
||
// case "PIANIFICAZIONE":
|
||
// pdfRelativePath = UtilityManager.getAppSetting("NavigatoreBFPianificazione");
|
||
// break;
|
||
// case "PROPOSTA":
|
||
// pdfRelativePath = UtilityManager.getAppSetting("NavigatoreBFProposta");
|
||
// break;
|
||
// case "MONITORAGGIO":
|
||
// pdfRelativePath = UtilityManager.getAppSetting("NavigatoreBFMonitoraggio");
|
||
// break;
|
||
// default:
|
||
// pdfRelativePath = UtilityManager.getAppSetting("NavigatoreBFDiagnosi");
|
||
// break;
|
||
// }
|
||
// else
|
||
// switch (_tipoReport.Trim())
|
||
// {
|
||
// case "DIAGNOSI":
|
||
// pdfRelativePath = UtilityManager.getAppSetting("NavigatoreSPDiagnosi");
|
||
// break;
|
||
// case "PIANIFICAZIONE":
|
||
// pdfRelativePath = UtilityManager.getAppSetting("NavigatoreSPPianificazione");
|
||
// break;
|
||
// case "PROPOSTA":
|
||
// pdfRelativePath = UtilityManager.getAppSetting("NavigatoreSPProposta");
|
||
// break;
|
||
// case "MONITORAGGIO":
|
||
// pdfRelativePath = UtilityManager.getAppSetting("NavigatoreSPMonitoraggio");
|
||
// break;
|
||
|
||
// default:
|
||
// pdfRelativePath = UtilityManager.getAppSetting("NavigatoreSPDiagnosi");
|
||
// break;
|
||
// }
|
||
|
||
// PdfDocument pp = new PdfDocument(startDir + pdfRelativePath);
|
||
|
||
// for (int _indicePagina = 1; _indicePagina <= pp.Pages.Count; _indicePagina++)
|
||
// {
|
||
// ImportedPage pg = new ImportedPage(pp.GetPage(_indicePagina));
|
||
// //this.SetTemplate(pg);
|
||
// //this.setPageFooter(pg);
|
||
// //this.setPageFooterNomeCliente(pg);
|
||
|
||
// _index.Add(pg);
|
||
// _indexPage++;
|
||
// }
|
||
//}
|
||
|
||
/// <summary>
|
||
/// Scrive nel Db lo streaming PDF come array di byte
|
||
/// </summary>
|
||
/// <param name="identificativo"></param>
|
||
/// <returns>restituisce l'array di byte[] inserito nel db</returns>
|
||
///
|
||
|
||
|
||
public void deleteReportSuFileSystem(int idReport, string nomefile)
|
||
{
|
||
|
||
string targetFolder = getPdfForlder();
|
||
|
||
string file = @targetFolder + idReport + "_" + nomefile + ".pdf";
|
||
if (Directory.Exists(System.IO.Path.GetDirectoryName(file)))
|
||
{
|
||
File.Delete(file);
|
||
}
|
||
|
||
}
|
||
|
||
public bool scriviSuFileSystem(int idReport)
|
||
{
|
||
string targetFolder = "";
|
||
string tipoSalvataggioReport = UtilityManager.getAppSetting("SavePDFtoDISK");
|
||
bool retValue = false;
|
||
try
|
||
{
|
||
|
||
//Todo GEstione idReport = - 1 o = 0 ...errore in fase inserimento in GEstione_PDF_FTP
|
||
|
||
switch (tipoSalvataggioReport)
|
||
{
|
||
case "0":
|
||
// Salvataggio su DataBase ReportManager
|
||
// Parametro Attualmente Gestito nel metodo DocumentPDF.insertIntoDb()
|
||
retValue = true;
|
||
break;
|
||
case "1":
|
||
// Salvataggio su File SYstem
|
||
// Gestione test in locale e/o Generazione Campione
|
||
targetFolder = UtilityManager.getAppSetting("SavePDFtoDISK_Folder");
|
||
_documentoFinale.Draw(@targetFolder + _dataThread.TipoReport + "_" + _dataThread.CodiceFiscale + "_" + _dataThread.Rete + ".pdf");
|
||
retValue = true;
|
||
break;
|
||
case "2":
|
||
//_documentoFinale.Draw(@targetFolder + _dataThread.TipoReport + "_" + _dataThread.CodiceFiscale + "_" + _dataThread.Rete + ".pdf");
|
||
targetFolder = getPdfForlder();
|
||
_documentoFinale.Draw(@targetFolder + idReport + "_" + _dataThread.NomeFileReport + ".pdf");
|
||
retValue = true;
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
|
||
return retValue;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
try
|
||
{
|
||
logger.Error(String.Concat(ex.Message, " ", idReport.ToString()));
|
||
}
|
||
catch { }
|
||
return false;
|
||
}
|
||
}
|
||
public int insertIntoDB()
|
||
{
|
||
|
||
|
||
//if (UtilityManager.getAppSetting("SavePDFtoDISK") == "1")
|
||
// return 0;
|
||
string saveToDisk = UtilityManager.getAppSetting("SavePDFtoDISK");
|
||
switch (saveToDisk)
|
||
{
|
||
case "1":
|
||
return 0;
|
||
case "2":
|
||
//pk dave
|
||
//break;
|
||
return 0;
|
||
default:
|
||
break;
|
||
}
|
||
|
||
List<Parametro> listaParametri = new List<Parametro>();
|
||
|
||
Parametro CodiceContratto = new Parametro();
|
||
CodiceContratto.ParameterName = "CodiceContratto";
|
||
CodiceContratto.DbType = DbType.String;
|
||
CodiceContratto.Value = _dataThread.CodiceContratto;
|
||
listaParametri.Add(CodiceContratto);
|
||
|
||
Parametro Rete = new Parametro();
|
||
Rete.ParameterName = "Rete";
|
||
Rete.DbType = DbType.String;
|
||
Rete.Value = _dataThread.Rete;
|
||
listaParametri.Add(Rete);
|
||
|
||
Parametro idCliente = new Parametro();
|
||
idCliente.ParameterName = "CodiceFiscale";
|
||
idCliente.DbType = DbType.String;
|
||
idCliente.Value = _dataThread.CodiceFiscale;
|
||
listaParametri.Add(idCliente);
|
||
|
||
Parametro NomeCliente = new Parametro();
|
||
NomeCliente.ParameterName = "NomeCliente";
|
||
NomeCliente.DbType = DbType.String;
|
||
NomeCliente.Value = _dataThread.NomeCliente;
|
||
listaParametri.Add(NomeCliente);
|
||
|
||
Parametro CognomeCliente = new Parametro();
|
||
CognomeCliente.ParameterName = "CognomeCliente";
|
||
CognomeCliente.DbType = DbType.String;
|
||
CognomeCliente.Value = _dataThread.CognomeCliente;
|
||
listaParametri.Add(CognomeCliente);
|
||
|
||
Parametro utente = new Parametro();
|
||
utente.ParameterName = "TipoReport";
|
||
utente.DbType = DbType.String;
|
||
utente.Value = _reportType.Descrizione;
|
||
listaParametri.Add(utente);
|
||
|
||
//V Inserito per i metadati
|
||
Parametro codReport = new Parametro();
|
||
codReport.ParameterName = "codReport";
|
||
codReport.DbType = DbType.Int32;
|
||
codReport.Value = _reportType.IdReport;
|
||
listaParametri.Add(codReport);
|
||
//
|
||
|
||
Parametro img = new Parametro();
|
||
img.ParameterName = "img";
|
||
img.DbType = DbType.Binary;
|
||
img.Value = this.getData();
|
||
listaParametri.Add(img);
|
||
|
||
Parametro CodicePB = new Parametro();
|
||
CodicePB.ParameterName = "CodicePB";
|
||
CodicePB.DbType = DbType.String;
|
||
CodicePB.Value = _dataThread.Agente;
|
||
listaParametri.Add(CodicePB);
|
||
|
||
Parametro NomePB = new Parametro();
|
||
NomePB.ParameterName = "NomePB";
|
||
NomePB.DbType = DbType.String;
|
||
NomePB.Value = _dataThread.NomeAgente;
|
||
listaParametri.Add(NomePB);
|
||
|
||
Parametro CognomePB = new Parametro();
|
||
CognomePB.ParameterName = "CognomePB";
|
||
CognomePB.DbType = DbType.String;
|
||
CognomePB.Value = _dataThread.CognomeAgente;
|
||
listaParametri.Add(CognomePB);
|
||
|
||
Parametro NumeroPagine = new Parametro();
|
||
NumeroPagine.ParameterName = "NumeroPagine";
|
||
NumeroPagine.DbType = DbType.Int32;
|
||
NumeroPagine.Value = _documentoFinale.Pages.Count;
|
||
listaParametri.Add(NumeroPagine);
|
||
|
||
|
||
Parametro Identificativo = new Parametro();
|
||
Identificativo.ParameterName = "Identificativo";
|
||
Identificativo.DbType = DbType.Int32;
|
||
Identificativo.Value = _reportType.TipoReport == TipoReport.DIAGNOSI ? _dataThread.IdReportPDFDiagnosi : _dataThread.IdReportPDFMonitoraggio;
|
||
listaParametri.Add(Identificativo);
|
||
|
||
|
||
string queryInserimento = UtilityManager.getAppSetting("QueryInserimento");
|
||
|
||
return Convert.ToInt32(DataAccess.ExecuteScalarStoredProcedure(DBProvider.SqlServer, queryInserimento, listaParametri));
|
||
// return DataAccess.ExecuteNonQueryStoredProcedure(DBProvider.SqlServer, queryInserimento, listaParametri);
|
||
|
||
|
||
|
||
//else
|
||
//{
|
||
// //V if it is daily run save always on the reporting online db
|
||
// if (UtilityManager.getAppSetting("Periodico") != "1")
|
||
// return DataAccess.ExecuteNonQueryStoredProcedure(DBProvider.SqlServer, queryInserimento, listaParametri);
|
||
// else
|
||
// return DataAccess.ExecuteNonQueryStoredProcedure(DBProvider.SqlServerStampeC6, queryInserimento, listaParametri);
|
||
//}
|
||
|
||
}
|
||
|
||
public void inserisciCommercialeLettera()
|
||
{
|
||
byte[] pdf = this.getData();
|
||
// Create two PDF document objects
|
||
PdfDocument pdfA;
|
||
GestoreLettera letter = new GestoreLettera(_dataThread.DataAccess);
|
||
letter.RestGestoreLettera();
|
||
|
||
/**** Fix Direct Bank 28/03/2023 - Pino ***/
|
||
if (!_dataThread.Periodico)
|
||
{
|
||
letter.idModello = _dataThread.ReportsType.Find(f => f.Descrizione == "Diagnosi").IdModello;
|
||
}
|
||
/******************************************/
|
||
|
||
if (UtilityManager.getAppSetting("Periodico") == "1" && _dataThread.TipoContratto == TipoContratto.Private)
|
||
{
|
||
var pages = letter.componiLetteraCommerciale(_dataThread.CodiceFiscale, _dataThread.Rete, TipoLettera.LetteraCommerciale, _dataThread.TipoContratto, LetteraAccompagnamento.TipoReport.Diagnosi, _dataThread.IsProffesionalClient);
|
||
pages.Reverse();
|
||
foreach (byte[] pdfPage in pages)
|
||
{
|
||
pdfA = new PdfDocument(pdfPage);
|
||
|
||
PdfDocument pdfB = new PdfDocument(pdf);
|
||
//pdfA = new PdfDocument(LetteraBA.GetLetteraBA(_dataThread));
|
||
// Merge the two documents
|
||
_documentoFinale = MergeDocument.Merge(pdfA, pdfB);
|
||
|
||
// Save the PDF
|
||
_data = _documentoFinale.Draw();
|
||
pdf = this.getData();
|
||
}
|
||
}
|
||
}
|
||
|
||
public void inserisciLettera()
|
||
{
|
||
|
||
byte[] pdf = this.getData();
|
||
// Create two PDF document objects
|
||
PdfDocument pdfA;
|
||
GestoreLettera letter = new GestoreLettera(_dataThread.DataAccess);
|
||
letter.RestGestoreLettera();
|
||
|
||
/**** Fix Direct Bank 28/03/2023 - Pino ***/
|
||
if (!_dataThread.Periodico)
|
||
{
|
||
// Per lettere di benvenuto
|
||
letter.idModello = _dataThread.ReportsType.Find(f => f.Descrizione == "Diagnosi").IdModello;
|
||
}
|
||
else
|
||
{
|
||
// Per la trimestrale controllo se l'utente è FD
|
||
if (_dataThread.ReportsType.Any(f=> f.Descrizione.ToUpper() == "MONITORAGGIO"))
|
||
letter.idModello = _dataThread.ReportsType.Find(f => f.Descrizione.ToUpper() == "MONITORAGGIO").IdModello;
|
||
else
|
||
letter.idModello = _dataThread.ReportsType.Find(f => f.Descrizione.ToUpper() == "DIAGNOSI").IdModello;
|
||
}
|
||
/******************************************/
|
||
|
||
if (UtilityManager.getAppSetting("Periodico") != "1")
|
||
{
|
||
|
||
if (_dataThread.AdesioneSuccessivaAvanzato || _dataThread.ContrattoOld)
|
||
pdfA = new PdfDocument(letter.componiLetteraBenvenuto(_dataThread.CodiceFiscale, _dataThread.Rete, TipoLettera.LetteraAccettazioneAttivazioneSeiPosticipata, _dataThread.TipoContratto, LetteraAccompagnamento.TipoReport.Diagnosi, _dataThread.IsProffesionalClient));
|
||
else
|
||
pdfA = new PdfDocument(letter.componiLetteraBenvenuto(_dataThread.CodiceFiscale, _dataThread.Rete, TipoLettera.LetteraAccettazioneConAttivazioneSei, _dataThread.TipoContratto, LetteraAccompagnamento.TipoReport.Diagnosi, _dataThread.IsProffesionalClient));
|
||
}
|
||
else
|
||
{
|
||
if (_dataThread.TipoReport.ToUpper().Trim() == "DIAGNOSI")
|
||
pdfA = new PdfDocument(letter.componiLetteraAccompagnamento(_dataThread.CodiceFiscale, _dataThread.Rete, _dataThread.TipoContratto, LetteraAccompagnamento.TipoReport.Diagnosi, _dataThread.IsProffesionalClient));
|
||
else
|
||
pdfA = new PdfDocument(letter.componiLetteraAccompagnamento(_dataThread.CodiceFiscale, _dataThread.Rete, _dataThread.TipoContratto, LetteraAccompagnamento.TipoReport.Monitoraggio, _dataThread.IsProffesionalClient));
|
||
|
||
}
|
||
PdfDocument pdfB = new PdfDocument(pdf);
|
||
//pdfA = new PdfDocument(LetteraBA.GetLetteraBA(_dataThread));
|
||
// Merge the two documents
|
||
|
||
|
||
/*** Fix per Fideuram Direct, per le lettere merge su entrambi i pdfA e pdfB contemplando la lettere di accompagnamento, per la trimestrale la lettrea non ci deve essere da requisiti 29/08/2023 - Pino ***/
|
||
if (!_dataThread.Periodico)
|
||
{
|
||
// Lettere
|
||
_documentoFinale = MergeDocument.Merge(pdfA, pdfB);
|
||
}
|
||
else
|
||
{
|
||
if (letter.idModello == 6)
|
||
_documentoFinale = new MergeDocument(pdfB);
|
||
else
|
||
_documentoFinale = MergeDocument.Merge(pdfA, pdfB);
|
||
}
|
||
/*************************************************************************************************************************************************************************************************************/
|
||
|
||
// Save the PDF
|
||
_data = _documentoFinale.Draw();
|
||
}
|
||
|
||
|
||
public int getIdentityReport(string rete, string codicefiscale, string tipoReport)
|
||
{
|
||
List<Parametro> parametri = new List<Parametro>();
|
||
Parametro parametro = new Parametro();
|
||
parametro.ParameterName = "Rete";
|
||
parametro.DbType = DbType.AnsiStringFixedLength;
|
||
parametro.Value = rete;
|
||
parametri.Add(parametro);
|
||
|
||
parametro = new Parametro();
|
||
parametro.ParameterName = "CodiceFiscale";
|
||
parametro.DbType = DbType.String;
|
||
parametro.Value = codicefiscale;
|
||
parametri.Add(parametro);
|
||
|
||
//FC Gestione Parallelizzazione Processi
|
||
// idReport <20> gestito dalla SP inserimento Gestione_Pdf_Ftp
|
||
|
||
parametro = new Parametro();
|
||
parametro.ParameterName = "TipoReport";
|
||
parametro.DbType = DbType.String;
|
||
parametro.Value = tipoReport;
|
||
parametri.Add(parametro);
|
||
|
||
string queryInserimento = UtilityManager.getAppSetting("GetIdReport");
|
||
//DataAccess.ExecuteNonQueryStoredProcedure(DBProvider.SqlServerStampeC6, queryInserimento, parametri);
|
||
try
|
||
{
|
||
return Convert.ToInt32(_dataThread.DataAccess.ExecuteScalarStoredProcedure(DBProvider.SqlServerStampeC6, queryInserimento, parametri));
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
try
|
||
{
|
||
logger.Error(String.Concat(ex.Message, " ", codicefiscale.ToString()));
|
||
}
|
||
catch { }
|
||
return -1;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
private string getNomeFileReport(string pathFolder)
|
||
{
|
||
|
||
try
|
||
{
|
||
string nomeFile = pathFolder;
|
||
//string tipoReport = "";
|
||
//switch (_dataThread.TipoReport)
|
||
//{
|
||
// case "D":
|
||
// tipoReport = "DP";
|
||
// break;
|
||
// case "M":
|
||
// tipoReport = "MP";
|
||
// break;
|
||
// default:
|
||
// break;
|
||
//}
|
||
nomeFile = nomeFile + "_" + _dataThread.CodiceFiscale;
|
||
//nomeFile = tipoReport;
|
||
|
||
return nomeFile;
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
try
|
||
{
|
||
logger.Error(String.Concat(e.Message, " ", pathFolder.ToString()));
|
||
}
|
||
catch { }
|
||
throw e;
|
||
}
|
||
}
|
||
|
||
private static string getPdfForlder()
|
||
{
|
||
string pdfForder = "";
|
||
try
|
||
{
|
||
|
||
pdfForder = UtilityManager.getAppSetting("pathFolder");
|
||
|
||
//Da utilizzare solo se prevista gestione piu cartelle
|
||
|
||
//string sPathPdf = UtilityManager.getAppSetting("pathFolder");
|
||
//string sDataLotto = DateTime.Now.ToString("yyyyMMdd");
|
||
//string prefissoFolder = UtilityManager.getAppSetting("prefissoFolder");
|
||
//string suffissoFolrder = UtilityManager.getAppSetting("suffissoFolder");
|
||
|
||
//string pdfForder = sPathPdf + "\\" + prefissoFolder + "_" + sDataLotto + "_" + suffissoFolrder;
|
||
|
||
//if (!Directory.Exists(pdfForder))
|
||
// Directory.CreateDirectory(pdfForder);
|
||
|
||
return pdfForder;
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
try
|
||
{
|
||
logger.Error(String.Concat(e.Message, " ", pdfForder.ToString()));
|
||
}
|
||
catch { }
|
||
throw e;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// ok
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private byte[] getData()
|
||
{
|
||
if (_data == null)
|
||
{
|
||
//if (_tipologia == "report")
|
||
//{
|
||
this.completeIndice();
|
||
//}
|
||
for (int i = 0; i < _indexPage; i++)
|
||
{
|
||
_document.Pages.Add((ImportedPage)_index[i]);
|
||
}
|
||
|
||
for (int i = 0; i < _core.Count; i++)
|
||
{
|
||
_document.Pages.Add((ImportedPage)_core[i]);
|
||
}
|
||
|
||
if (_glossario)
|
||
{
|
||
this.addGlossario();
|
||
}
|
||
// MIFID2 20180410 Provo a creare nuova sezione Avvertenze e Glossario
|
||
//this.addNewGlossario();
|
||
|
||
_document.InitialPage = 1;
|
||
|
||
//genero i byte
|
||
_data = _document.Draw();
|
||
}
|
||
|
||
return _data;
|
||
}
|
||
|
||
//public void renderPDF()
|
||
//{
|
||
// this.renderPDF(_document.Title + ".pdf");
|
||
//}
|
||
|
||
//public void renderPDF(string downloadAsFileName)
|
||
//{
|
||
|
||
// byte[] data = this.getData();
|
||
// PdfDocument pdfDoc = new PdfDocument(data);
|
||
|
||
// MergeDocument mDoc = new MergeDocument(pdfDoc);
|
||
|
||
// mDoc.CompressionLevel = 9;
|
||
|
||
// if (downloadAsFileName == null)
|
||
// mDoc.DrawToWeb();
|
||
// else
|
||
// mDoc.DrawToWeb(downloadAsFileName);
|
||
//}
|
||
|
||
//public void renderPDFFromDB(int identificativo)
|
||
//{
|
||
// this.renderPDFFromDB(identificativo, null);
|
||
//}
|
||
|
||
//public void renderPDFFromDB(int identificativo, string downloadAsFileName)
|
||
//{
|
||
// PdfDocument pdfDoc = new PdfDocument(this.getDataFromDB(identificativo));
|
||
// MergeDocument mDoc = new MergeDocument(pdfDoc);
|
||
// mDoc.CompressionLevel = 9;
|
||
// if (downloadAsFileName == null)
|
||
// mDoc.DrawToWeb();
|
||
// else
|
||
// mDoc.DrawToWeb(downloadAsFileName);
|
||
//}
|
||
|
||
//private byte[] getDataFromDB(int identificativo)
|
||
//{
|
||
// List<Parametro> listaParametri = new List<Parametro>();
|
||
// Parametro id = new Parametro();
|
||
// id.ParameterName = "id";
|
||
// id.DbType = DbType.Int32;
|
||
// id.Value = identificativo;
|
||
// listaParametri.Add(id);
|
||
|
||
// return (byte[])DataAccess.ExecuteScalarStoredProcedure(DBProvider.SqlServer, "sp_readPDFImage_New", listaParametri);
|
||
//}
|
||
//==============================================================
|
||
public float getMargineLeft()
|
||
{
|
||
return _margineLEFT;
|
||
}
|
||
//==============================================================
|
||
private float getMargineRight()
|
||
{
|
||
return _margineRIGHT;
|
||
}
|
||
//==============================================================
|
||
public float getLastPos()
|
||
{
|
||
if (_writableYPot != 0)
|
||
this.setLastPos(_writableYPot);
|
||
return _writableY;
|
||
}
|
||
|
||
public float getLastPos(string combo)
|
||
{
|
||
//if(_writableYPot != 0;
|
||
// this.setLastPos(_writableYPot);
|
||
//_writableYPot = 0;
|
||
return _writableY;
|
||
}
|
||
|
||
//==============================================================
|
||
public void setLastPos(float y)
|
||
{
|
||
//aggiorna la posizione da cui si pu<70> scrivere
|
||
if (_saltoPagina && _currentPage < _corePage)
|
||
{
|
||
_page = _backPage;
|
||
_currentPage = _corePage;
|
||
_writableY = _margineUP + _writableYPot + _sectionSpace;
|
||
}
|
||
else
|
||
{
|
||
if (_writableYPot > y && y > 0)
|
||
_writableY += (_writableYPot + _sectionSpace);
|
||
else
|
||
_writableY += (y + _sectionSpace);
|
||
}
|
||
_writableYold = _writableY;
|
||
_saltoPagina = false;
|
||
_writableYPot = 0;
|
||
}
|
||
//==============================================================
|
||
public void setPotenzialeLastPos(float y, bool salto)
|
||
{
|
||
//aggiorna la posizione da cui si pu<70> scrivere
|
||
_writableYPot = (y);
|
||
_saltoPagina = salto;
|
||
}
|
||
//==============================================================
|
||
public void returnLastPage()
|
||
{
|
||
//ritorno alla penultima pagina. Utile per il disegno delle sezioni in modalit<69> combo
|
||
_writableY = _writableYold;
|
||
_backPage = _page;
|
||
_currentPage--;
|
||
_page = (ImportedPage)_core[_core.Count - 2];
|
||
}
|
||
//==============================================================
|
||
public void creaIndice()
|
||
{
|
||
//string pdfRelativePath;
|
||
|
||
//if (_tipologia != "report")
|
||
//{
|
||
// if (_rete == "F")
|
||
// pdfRelativePath = UtilityManager.getAppSetting("Template");
|
||
// else
|
||
// pdfRelativePath = UtilityManager.getAppSetting("TemplateSP");
|
||
//}
|
||
//else
|
||
//{
|
||
//System.Reflection.Assembly thisExe;
|
||
//thisExe = System.Reflection.Assembly.GetExecutingAssembly();
|
||
|
||
//if (_dataThread.Rete == "F")
|
||
// pdfRelativePath = UtilityManager.getAppSetting("TemplateReport");
|
||
//else
|
||
// pdfRelativePath = UtilityManager.getAppSetting("TemplateReportSP");
|
||
////}
|
||
|
||
//System.IO.Stream file = thisExe.GetManifestResourceStream(pdfRelativePath);
|
||
|
||
System.IO.Stream file = _templateProvider.TemplateReport;
|
||
PdfDocument pp = new PdfDocument(file);
|
||
_indice = new ImportedPage(pp.GetPage(1));
|
||
_indice.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(37, 122, 330, 13, 0, _templateProvider.ChapterBackgroundColor)); //ceTe.DynamicPDF.CmykColor.Red
|
||
_indice.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Indice", 50, 119, 100, 8, _verdanaBold, 15, ceTe.DynamicPDF.CmykColor.White));
|
||
|
||
this.SetTemplate(_indice);
|
||
this.setPageFooter(_indice);
|
||
this.setPageFooterNomeCliente(_indice);
|
||
_index.Add(_indice);
|
||
_indiceY = _margineUP + 30;
|
||
_activeIndex = true;
|
||
}
|
||
//==============================================================
|
||
private void completeIndice()
|
||
{
|
||
_margineDOWN = 105;
|
||
|
||
if (_activeIndex)
|
||
{
|
||
ImportedPage app = (ImportedPage)_index[_indexPage];
|
||
//int indexCount = _indexPage + 1; //uno per le avvertenze sistemare
|
||
//V
|
||
int indexCount = _indexPage;
|
||
//
|
||
//if (_strutturaIndice.VoceIndice.Rows.Count > 25)
|
||
// //Era 2
|
||
// indexCount += 2;
|
||
//else
|
||
indexCount += 1;
|
||
|
||
_indexPage++;
|
||
|
||
int FontSizeIndice = 10;//12
|
||
int interline = 14;//20
|
||
|
||
//completa _indice
|
||
foreach (DataSetIndice.VoceIndiceRow newVoce in _strutturaIndice.VoceIndice)
|
||
{
|
||
if (_indiceY > (_pageHeight - (_margineDOWN + 50)))
|
||
{
|
||
this.creaIndice();
|
||
_indexPage++;
|
||
app = (ImportedPage)_index[_indexPage - 1];
|
||
}
|
||
|
||
if (newVoce.Tipologia == "chapter")
|
||
{
|
||
app.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(newVoce.Titolo, 50, _indiceY, 500, 12, _verdanaBold));
|
||
app.Elements.Add(new PageNumberingLabel(Convert.ToString(newVoce.Pagina + indexCount), 0, _indiceY, 550, 12, _verdanaBold, FontSizeIndice, ceTe.DynamicPDF.TextAlign.Right));
|
||
}
|
||
else
|
||
{
|
||
app.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(newVoce.Titolo, 80, _indiceY, 500, 12, _verdana, FontSizeIndice - 1));//11
|
||
app.Elements.Add(new PageNumberingLabel(Convert.ToString(newVoce.Pagina + indexCount), 0, _indiceY, 550, 12, _verdana, FontSizeIndice, ceTe.DynamicPDF.TextAlign.Right));
|
||
}
|
||
|
||
_indiceY += interline;//20
|
||
}
|
||
|
||
if (_glossario)
|
||
{
|
||
// MIFID2 20180406 Modificato il titolo del glossario
|
||
//app.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Glossario", 50, _indiceY, 500, 12, _verdanaBold));
|
||
app.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Avvertenze e Glossario", 50, _indiceY + 10, 500, 12, _verdanaBold));
|
||
//--MIFID2
|
||
//app.Elements.Add(new PageNumberingLabel(Convert.ToString(_core.Count + indexCount + 2), 0, _indiceY, 550, 12, _verdanaBold, 12, ceTe.DynamicPDF.TextAlign.Right));
|
||
app.Elements.Add(new PageNumberingLabel(Convert.ToString(_core.Count + indexCount + 1), 0, _indiceY + 10, 550, 12, _verdanaBold, FontSizeIndice, ceTe.DynamicPDF.TextAlign.Right));
|
||
}
|
||
|
||
}
|
||
//else
|
||
// addNavigatore();
|
||
|
||
|
||
///Aggiungo pagina delle AVVERTENZE
|
||
///V
|
||
//string pdfRelativePath;
|
||
|
||
//System.Reflection.Assembly thisExe;
|
||
//thisExe = System.Reflection.Assembly.GetExecutingAssembly();
|
||
|
||
//if (_dataThread.Rete == "F")
|
||
// pdfRelativePath = UtilityManager.getAppSetting("TemplateAvvertenzeBF");
|
||
//else
|
||
// pdfRelativePath = UtilityManager.getAppSetting("TemplateAvvertenzeSP");
|
||
|
||
//System.IO.Stream file = thisExe.GetManifestResourceStream(pdfRelativePath);
|
||
|
||
|
||
//PdfDocument pp = new PdfDocument(file);
|
||
//_indice = new ImportedPage(pp.GetPage(1));
|
||
|
||
//this.SetTemplate(_indice);
|
||
//this.setPageFooter(_indice);
|
||
//this.setPageFooterNomeCliente(_indice);
|
||
//_index.Add(_indice);
|
||
//_indiceY = _margineUP + 30;
|
||
//_activeIndex = true;
|
||
|
||
//_indexPage++;
|
||
//_indiceY = _margineUP;
|
||
//V
|
||
}
|
||
//==============================================================
|
||
|
||
public void creaCopertina(string report, bool withName)
|
||
{
|
||
|
||
//string pdfRelativePath;
|
||
FormatNum conv = new FormatNum();
|
||
|
||
//System.Reflection.Assembly thisExe;
|
||
//thisExe = System.Reflection.Assembly.GetExecutingAssembly();
|
||
|
||
//if (_dataThread.Rete == "F")
|
||
// pdfRelativePath = UtilityManager.getAppSetting("Copertina");
|
||
//else
|
||
// pdfRelativePath = UtilityManager.getAppSetting("CopertinaSP");
|
||
|
||
//System.IO.Stream file = thisExe.GetManifestResourceStream(pdfRelativePath);
|
||
|
||
System.IO.Stream file = _templateProvider.TemplateCopertina;
|
||
|
||
ImportedPage app;
|
||
PdfDocument pp = new PdfDocument(file);
|
||
|
||
app = new ImportedPage(pp.GetPage(1));
|
||
|
||
/*** Fix Direct Banck 12/03/2023 - Pino ***/
|
||
//app.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(report.ToUpper(), 157, 231, 220, 8, _verdanaBold, 18, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.White));
|
||
|
||
if (!_dataThread.Periodico)
|
||
{
|
||
if (_dataThread.ReportsType[0].IdModello == 6)
|
||
app.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Report di Benvenuto", 70, 231, 300, 8, _verdanaBold, 18, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.White));
|
||
else
|
||
app.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(report.ToUpper(), 157, 231, 220, 8, _verdanaBold, 18, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.White));
|
||
}
|
||
else
|
||
{
|
||
if (_dataThread.ReportsType.Exists(e => e.IdModello == 6))
|
||
app.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Report di Monitoraggio", 70, 231, 300, 8, _verdanaBold, 18, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.White));
|
||
else
|
||
app.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(report.ToUpper(), 157, 231, 220, 8, _verdanaBold, 18, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.White));
|
||
}
|
||
/******************************************/
|
||
|
||
if (withName)
|
||
{
|
||
if (UtilityManager.getAppSetting("Periodico") == "1")
|
||
app.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Report prodotto " + _dataThread.DataFineTrimestreCorrente.ToLongDateString() + " per ", 88, 265, 300, 8, _verdana, 9, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
|
||
else
|
||
app.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Report prodotto " + DateTime.Now.ToLongDateString() + " per ", 88, 265, 300, 8, _verdana, 9, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
|
||
|
||
|
||
|
||
if (_dataThread.CodiceFiscale.Length == 11)
|
||
{
|
||
//persona giuridica
|
||
app.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(conv.CapitalizeText(_dataThread.CognomeCliente) + " " + conv.CapitalizeText(_dataThread.NomeCliente), 88, 280, 300, 8, _verdanaBold, 9, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
|
||
}
|
||
else
|
||
{
|
||
if (_dataThread.CodiceFiscale.Contains("@"))
|
||
{
|
||
// Fiduciaria
|
||
string[] codiceMandato = _dataThread.CodiceFiscale.Split('@');
|
||
app.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(conv.CapitalizeText(_dataThread.CognomeCliente) + " " + conv.CapitalizeText(_dataThread.NomeCliente.Replace("$", "") + " - " + codiceMandato[1].ToString()), 88, 280, 300, 8, _verdanaBold, 9, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
|
||
|
||
}
|
||
else
|
||
{
|
||
//persona fisica
|
||
app.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(conv.CapitalizeText(_dataThread.NomeCliente) + " " + conv.CapitalizeText(_dataThread.CognomeCliente), 88, 280, 300, 8, _verdanaBold, 9, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
|
||
|
||
}
|
||
}
|
||
}
|
||
else
|
||
app.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Report prodotto " + DateTime.Now.ToLongDateString(), 88, 265, 300, 8, _verdana, 9, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
|
||
_index.Add(app);
|
||
_indexPage++;
|
||
//_copertina = true;
|
||
}
|
||
|
||
public void setPageTitolo(string label)
|
||
{
|
||
|
||
if (_writableY != _margineUP)
|
||
this.addPage();
|
||
|
||
//Adriano 20171109 per allargare l'area per un titolo molto lungo
|
||
int rectangleWidth = 400;
|
||
int textWidth = 400;
|
||
|
||
if (label.Length > 46) //Andrea Modifica IWBank
|
||
{
|
||
rectangleWidth = 475;
|
||
textWidth = 500;
|
||
}
|
||
|
||
//_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(_margineLEFT - 5, 122, 400, 17, 0, _templateProvider.ChapterBackgroundColor)); //ceTe.DynamicPDF.CmykColor.Red
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(_margineLEFT - 5, 122, rectangleWidth, 17, 0, _templateProvider.ChapterBackgroundColor)); //ceTe.DynamicPDF.CmykColor.Red
|
||
|
||
//--Adriano
|
||
|
||
if (_activeIndex)
|
||
{
|
||
_chapterNum++;
|
||
_sectionNum = 1;
|
||
updateIndice(label, "chapter");
|
||
//Adriano 20171109 per allargare l'area per un titolo molto lungo
|
||
//_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(_chapterNum + ". " + label, _margineLEFT, 120, 400, 8, _verdanaBold, 14, ceTe.DynamicPDF.CmykColor.White));
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(_chapterNum + ". " + label, _margineLEFT, 120, textWidth, 8, _verdanaBold, 14, ceTe.DynamicPDF.CmykColor.White));
|
||
|
||
//--Adriano
|
||
}
|
||
else
|
||
{
|
||
//if (_tipologia != "report")
|
||
//_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(label, _margineLEFT, 120, 400, 8, _verdanaBold, 14, ceTe.DynamicPDF.CmykColor.White));
|
||
|
||
//Adriano 20171109 per allargare l'area per un titolo molto lungo
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(label, _margineLEFT, 120, textWidth, 8, _verdanaBold, 14, ceTe.DynamicPDF.CmykColor.White));
|
||
|
||
//--Adriano
|
||
//else
|
||
//{
|
||
// _chapterNum++;
|
||
// _sectionNum = 1;
|
||
// _page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(_chapterNum + ". " + label, _margineLEFT, 120, 400, 8, _verdanaBold, 14, ceTe.DynamicPDF.CmykColor.White));
|
||
//}
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
/// <param name="label"></param>
|
||
/// <param name="eliminaspaziatura"></param>
|
||
public void setPageTitolo(string label, bool eliminaspaziatura)
|
||
{
|
||
setPageTitolo(label);
|
||
if (eliminaspaziatura)
|
||
_writableY = 150;
|
||
}
|
||
|
||
|
||
public void setChapterTitolo(string label)
|
||
{
|
||
if ((_writableY + 100) > (_pageHeight - _margineDOWN))
|
||
this.addPage();
|
||
|
||
///PER ALLINEARE IL TITOLO ALLA RIGA DELLA PAGINA
|
||
if (_writableY == _margineUP)
|
||
_writableY = 142;
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(_margineLEFT - 5, _writableY - 20, 400, 17, 0, _templateProvider.ChapterBackgroundColor)); //ceTe.DynamicPDF.CmykColor.Red
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(_margineLEFT - 5, _writableY - 20, 522, 0.4F, 0, _templateProvider.ChapterBackgroundColor)); //ceTe.DynamicPDF.CmykColor.Red
|
||
|
||
if (_activeIndex)
|
||
{
|
||
_chapterNum++;
|
||
_sectionNum = 1;
|
||
updateIndice(label, "chapter");
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(_chapterNum + ". " + label, _margineLEFT, _writableY - 22, 400, 8, _verdanaBold, 14, ceTe.DynamicPDF.CmykColor.White));
|
||
}
|
||
else
|
||
{
|
||
//if (_tipologia != "report")
|
||
// _page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(label, _margineLEFT, _writableY - 22, 400, 8, _verdanaBold, 14, ceTe.DynamicPDF.CmykColor.White));
|
||
//else
|
||
//{
|
||
_chapterNum++;
|
||
_sectionNum = 1;
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(_chapterNum + ". " + label, _margineLEFT, _writableY - 22, 400, 8, _verdanaBold, 14, ceTe.DynamicPDF.CmykColor.White));
|
||
//}
|
||
}
|
||
_writableY += 20;
|
||
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// E' il titolo della pagina scritto bianco su sfondo rosso.
|
||
/// A differenza di setPageTitolo si posiziona a seconda della posizione del cursore.
|
||
/// il parametro Height <20> lo spazio necessario al disegno del titolo capitolo piu la prima sezione.
|
||
/// </summary>
|
||
/// <param name="label"></param>
|
||
/// <param name="Height"></param>
|
||
public void setChapterTitolo(string label, float Height, bool eliminaspaziatura)
|
||
{
|
||
this.setChapterTitolo(label, Height);
|
||
|
||
if (eliminaspaziatura)
|
||
_writableY -= 10;
|
||
}
|
||
|
||
|
||
public void setChapterTitolo(string label, float Height)
|
||
{
|
||
if ((_writableY + Height + 50) > (_pageHeight - _margineDOWN))
|
||
this.addPage();
|
||
|
||
///PER ALLINEARE IL TITOLO ALLA RIGA DELLA PAGINA
|
||
if (_writableY == _margineUP)
|
||
_writableY = 142;
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(_margineLEFT - 5, _writableY - 20, 400, 17, 0, _templateProvider.ChapterBackgroundColor));//ceTe.DynamicPDF.CmykColor.Red
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(_margineLEFT - 5, _writableY - 20, 522, 0.4F, 0, _templateProvider.ChapterBackgroundColor)); //ceTe.DynamicPDF.CmykColor.Red
|
||
|
||
if (_activeIndex)
|
||
{
|
||
_chapterNum++;
|
||
_sectionNum = 1;
|
||
updateIndice(label, "chapter");
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(_chapterNum + ". " + label, _margineLEFT, _writableY - 22, 400, 8, _verdanaBold, 14, ceTe.DynamicPDF.CmykColor.White));
|
||
}
|
||
else
|
||
{
|
||
//if (_tipologia != "report")
|
||
// _page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(label, _margineLEFT, _writableY - 22, 400, 8, _verdanaBold, 14, ceTe.DynamicPDF.CmykColor.White));
|
||
//else
|
||
//{
|
||
_chapterNum++;
|
||
_sectionNum = 1;
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(_chapterNum + ". " + label, _margineLEFT, _writableY - 22, 400, 8, _verdanaBold, 14, ceTe.DynamicPDF.CmykColor.White));
|
||
//}
|
||
}
|
||
_writableY += 20;
|
||
}
|
||
|
||
public void setChapterHeader(string label)
|
||
{
|
||
int m = (int)((float)label.Length / 135) + 2;
|
||
if (this.checkMargin((m - 1) * 20)) this.addPage();
|
||
FormattedTextArea text = new FormattedTextArea(label, _margineLEFT - 5, _writableY - 10, 520, m, new FontFamily("pipp", _verdana, _verdanaBold, _verdanaItalic, _verdanaBoldItalic), 9, false);
|
||
text.Height = text.GetRequiredHeight();
|
||
text.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Justify;
|
||
_page.Elements.Add(text);
|
||
_writableY += text.Height + 10;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Stampa il testo del paragrafo e elimina lo spazio tra il titolo del capitolo e il testo che viene stampato.
|
||
/// Usato solo per la S57
|
||
/// </summary>
|
||
/// <param name="label"></param>
|
||
public void setChapterHeader(string label, bool eliminaspaziatura)
|
||
{
|
||
setChapterHeader(label);
|
||
if (eliminaspaziatura)
|
||
_writableY -= 10;
|
||
}
|
||
|
||
public void setChapterHeader(string label, float height)
|
||
{
|
||
if (label != string.Empty)
|
||
{
|
||
int m = (int)((float)label.Length / 135) + 2;
|
||
if (this.checkMargin((m - 1) * 20 + height)) this.addPage();
|
||
FormattedTextArea text = new FormattedTextArea(label, _margineLEFT - 5, _writableY - 10, 520, m, new FontFamily("pipp", _verdana, _verdanaBold, _verdanaItalic, _verdanaBoldItalic), 9, false);
|
||
text.Height = text.GetRequiredHeight();
|
||
text.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Justify;
|
||
_page.Elements.Add(text);
|
||
_writableY += text.Height + 10;
|
||
}
|
||
}
|
||
//L
|
||
public void setChapterHeader(string label, int x, int width, float font, string classeSpecificaDaFixare = null, string _TipoReport = null)
|
||
{
|
||
int baseGap = 10;
|
||
//Aumento il valore per diminuire la posizione Y del testo
|
||
switch (classeSpecificaDaFixare)
|
||
{
|
||
case "S151":
|
||
baseGap = 57;
|
||
break;
|
||
case "S177":
|
||
baseGap = 40;
|
||
break;
|
||
case "FD178":
|
||
baseGap = -5;
|
||
break;
|
||
case "FD177":
|
||
baseGap = +30;
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(classeSpecificaDaFixare) && classeSpecificaDaFixare == "S177")
|
||
if (!string.IsNullOrEmpty(_TipoReport) && _TipoReport.Equals(TipoReport.DIAGNOSI.ToString()))
|
||
baseGap = 25;
|
||
|
||
int m = (int)((float)label.Length / 135) + 2;
|
||
if (this.checkMargin((m - 1) * 20)) this.addPage();
|
||
FormattedTextArea text = new FormattedTextArea(label, _margineLEFT - 5 + x, _writableY - baseGap, width, m, new FontFamily("pipp", _verdana, _verdanaBold, _verdanaItalic, _verdanaBoldItalic), font, false);
|
||
text.Height = text.GetRequiredHeight();
|
||
text.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Justify;
|
||
_page.Elements.Add(text);
|
||
|
||
//Aggiusto l'altezza della S177 per recuperare spazio tra i testi
|
||
if (!string.IsNullOrEmpty(classeSpecificaDaFixare) && (classeSpecificaDaFixare == "S177" || classeSpecificaDaFixare=="FD178"))
|
||
{
|
||
if (!string.IsNullOrEmpty(_TipoReport) && _TipoReport.Equals(TipoReport.DIAGNOSI.ToString()))
|
||
_writableY += text.Height + 15;
|
||
else if(classeSpecificaDaFixare == "FD178")
|
||
{
|
||
_writableY += text.Height + 50;
|
||
}
|
||
else
|
||
_writableY += text.Height - 10;
|
||
}
|
||
else
|
||
{
|
||
_writableY += text.Height + 10;
|
||
}
|
||
}
|
||
|
||
public void setChapterHeader(string label, int x, int y, int width, float font)
|
||
{
|
||
int m = (int)((float)label.Length / 135) + 2;
|
||
if (this.checkMargin((m - 1) * 20)) this.addPage();
|
||
FormattedTextArea text = new FormattedTextArea(label, _margineLEFT - 5 + x, y, width, m, new FontFamily("pipp", _verdana, _verdanaBold, _verdanaItalic, _verdanaBoldItalic), font, false);
|
||
text.Height = text.GetRequiredHeight();
|
||
text.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Justify;
|
||
_page.Elements.Add(text);
|
||
_writableY += text.Height + 10;
|
||
}
|
||
|
||
private void setPageFooterNomeCliente(ImportedPage pp)
|
||
{
|
||
FormatNum conv = new FormatNum();
|
||
////LATO SX
|
||
//if (_modalitaAnonima == 1)
|
||
//{
|
||
//if (_tipologia != "report")
|
||
// pp.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Scheda prodotta " + DateTime.Now.ToLongDateString() + " sui dati di ", _margineLEFT - 5, _pageHeight - _margineDOWN + 15, 300, 8, _verdana, 8, ceTe.DynamicPDF.CmykColor.Black));
|
||
//else
|
||
|
||
if (UtilityManager.getAppSetting("Periodico") == "1")
|
||
pp.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Report prodotto " + _dataThread.DataFineTrimestreCorrente.ToLongDateString() + " per ", _margineLEFT - 5, _pageHeight - _templateProvider.MarginDown + 15, 300, 8, _verdana, 8, ceTe.DynamicPDF.CmykColor.Black));
|
||
else
|
||
pp.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Report prodotto " + DateTime.Now.ToLongDateString() + " per ", _margineLEFT - 5, _pageHeight - _templateProvider.MarginDown + 15, 300, 8, _verdana, 8, ceTe.DynamicPDF.CmykColor.Black));
|
||
|
||
if (_dataThread.CodiceFiscale.Length == 11)//persona giuridica
|
||
pp.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(conv.CapitalizeText(_dataThread.CognomeCliente) + " " + conv.CapitalizeText(_dataThread.NomeCliente), _margineLEFT - 5, _pageHeight - _templateProvider.MarginDown + 25, 300, 8, _verdanaBold, 8, ceTe.DynamicPDF.CmykColor.Black));
|
||
else
|
||
{
|
||
if (_dataThread.CodiceFiscale.Contains("@")) // Fiduciaria
|
||
{
|
||
string[] codiceMandato = _dataThread.CodiceFiscale.Split('@');
|
||
pp.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(conv.CapitalizeText(_dataThread.CognomeCliente) + " - " + codiceMandato[1], _margineLEFT - 5, _pageHeight - _templateProvider.MarginDown + 25, 300, 8, _verdanaBold, 8, ceTe.DynamicPDF.CmykColor.Black));
|
||
|
||
}
|
||
else //persona fisica
|
||
pp.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(conv.CapitalizeText(_dataThread.NomeCliente) + " " + conv.CapitalizeText(_dataThread.CognomeCliente), _margineLEFT - 5, _pageHeight - _templateProvider.MarginDown + 25, 300, 8, _verdanaBold, 8, ceTe.DynamicPDF.CmykColor.Black));
|
||
}
|
||
|
||
//}
|
||
//else
|
||
//{
|
||
// if (_tipologia != "report")
|
||
// pp.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Scheda prodotta " + DateTime.Now.ToLongDateString(), _margineLEFT - 5, _pageHeight - _margineDOWN + 15, 300, 8, _verdana, 8, ceTe.DynamicPDF.CmykColor.Black));
|
||
// else
|
||
// pp.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Report prodotto " + DateTime.Now.ToLongDateString(), _margineLEFT - 5, _pageHeight - _margineDOWN + 15, 300, 8, _verdana, 8, ceTe.DynamicPDF.CmykColor.Black));
|
||
|
||
//}
|
||
}
|
||
|
||
public void setNotaPieDiPagina(string label)
|
||
{
|
||
FormattedTextArea text = new FormattedTextArea(label, _margineLEFT - 5, _pageHeight - _margineDOWN, 520, 20, new FontFamily("pipp", _verdana), 7, false);
|
||
text.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Justify;
|
||
text.Height = text.GetRequiredHeight();
|
||
text.Y -= text.Height - 10;
|
||
_page.Elements.Add(text);
|
||
_margineDOWN += text.Height;
|
||
}
|
||
public void setNotaPieDiPagina(string label, string id)
|
||
{
|
||
FormattedTextArea text = new FormattedTextArea(label, _margineLEFT - 5, _pageHeight - _margineDOWN, 520, 20, new FontFamily("pipp", _verdana), 7, false);
|
||
text.ID = id;
|
||
text.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Justify;
|
||
text.Height = text.GetRequiredHeight();
|
||
text.Y -= text.Height - 10;
|
||
|
||
//se l'elemento <20> stato gia inserito nella pagina non lo inserisco.
|
||
PageElement element = null;
|
||
element = _page.Elements.GetPageElementByID(id);
|
||
|
||
if (element == null)
|
||
_page.Elements.Add(text);
|
||
|
||
_margineDOWN += text.Height;
|
||
}
|
||
|
||
private void setPageFooter(ImportedPage pp)
|
||
{
|
||
FormatNum conv = new FormatNum();
|
||
|
||
/**** Fix Direct Banck 13/03/2023 - Pino ***/
|
||
////LATO DX
|
||
//pp.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Private Banker", _templateProvider.MarginRight, _pageHeight - _templateProvider.MarginDown + 15, 300, 8, _verdanaBold, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
|
||
////V
|
||
//string temp = ClsFunzioniGeneriche.FormattaIndirizzo(_dataThread.IndirizzoAgente);
|
||
|
||
|
||
//pp.Elements.Add(new ceTe.DynamicPDF.PageElements.Label((conv.CapitalizeText(_dataThread.NomeAgente) + " " + conv.CapitalizeText(_dataThread.CognomeAgente)).TrimEnd(), _templateProvider.MarginRight, _pageHeight - _templateProvider.MarginDown + 25, 300, 8, _verdanaBold, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
|
||
//pp.Elements.Add(new ceTe.DynamicPDF.PageElements.Label((temp + " - " + _dataThread.CapAgente + " " + _dataThread.CittaAgente).TrimEnd(), _templateProvider.MarginRight, _pageHeight - _templateProvider.MarginDown + 35, 300, 8, _verdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
|
||
//pp.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(("Tel " + _dataThread.TelefonoAgente).TrimEnd(), _templateProvider.MarginRight, _pageHeight - _templateProvider.MarginDown + 45, 300, 8, _verdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
|
||
|
||
if (!_dataThread.Periodico)
|
||
{
|
||
if (_dataThread.ReportsType.Find(f => f.Descrizione.ToUpper() == "DIAGNOSI").IdModello != 6)
|
||
{
|
||
//LATO DX
|
||
pp.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Private Banker", _templateProvider.MarginRight, _pageHeight - _templateProvider.MarginDown + 15, 300, 8, _verdanaBold, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
|
||
//V
|
||
string temp = ClsFunzioniGeneriche.FormattaIndirizzo(_dataThread.IndirizzoAgente);
|
||
|
||
|
||
pp.Elements.Add(new ceTe.DynamicPDF.PageElements.Label((conv.CapitalizeText(_dataThread.NomeAgente) + " " + conv.CapitalizeText(_dataThread.CognomeAgente)).TrimEnd(), _templateProvider.MarginRight, _pageHeight - _templateProvider.MarginDown + 25, 300, 8, _verdanaBold, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
|
||
pp.Elements.Add(new ceTe.DynamicPDF.PageElements.Label((temp + " - " + _dataThread.CapAgente + " " + _dataThread.CittaAgente).TrimEnd(), _templateProvider.MarginRight, _pageHeight - _templateProvider.MarginDown + 35, 300, 8, _verdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
|
||
pp.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(("Tel " + _dataThread.TelefonoAgente).TrimEnd(), _templateProvider.MarginRight, _pageHeight - _templateProvider.MarginDown + 45, 300, 8, _verdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (_dataThread.ReportsType.Exists(e => e.IdModello != 6))
|
||
{
|
||
//LATO DX
|
||
pp.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Private Banker", _templateProvider.MarginRight, _pageHeight - _templateProvider.MarginDown + 15, 300, 8, _verdanaBold, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
|
||
//V
|
||
string temp = ClsFunzioniGeneriche.FormattaIndirizzo(_dataThread.IndirizzoAgente);
|
||
|
||
|
||
pp.Elements.Add(new ceTe.DynamicPDF.PageElements.Label((conv.CapitalizeText(_dataThread.NomeAgente) + " " + conv.CapitalizeText(_dataThread.CognomeAgente)).TrimEnd(), _templateProvider.MarginRight, _pageHeight - _templateProvider.MarginDown + 25, 300, 8, _verdanaBold, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
|
||
pp.Elements.Add(new ceTe.DynamicPDF.PageElements.Label((temp + " - " + _dataThread.CapAgente + " " + _dataThread.CittaAgente).TrimEnd(), _templateProvider.MarginRight, _pageHeight - _templateProvider.MarginDown + 35, 300, 8, _verdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
|
||
pp.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(("Tel " + _dataThread.TelefonoAgente).TrimEnd(), _templateProvider.MarginRight, _pageHeight - _templateProvider.MarginDown + 45, 300, 8, _verdana, 8, ceTe.DynamicPDF.TextAlign.Right, ceTe.DynamicPDF.CmykColor.Black));
|
||
}
|
||
}
|
||
/*******************************************/
|
||
}
|
||
|
||
private void updateIndice(string label, string type)
|
||
{
|
||
DataSetIndice.VoceIndiceRow newVoce = _strutturaIndice.VoceIndice.NewVoceIndiceRow();
|
||
|
||
//aggiorna _indice
|
||
if (type == "chapter")
|
||
{
|
||
newVoce.Tipologia = "chapter";
|
||
newVoce.Titolo = _chapterNum + ". " + label;
|
||
newVoce.Pagina = _corePage;
|
||
}
|
||
else
|
||
{
|
||
newVoce.Tipologia = "Section";
|
||
newVoce.Titolo = _chapterNum + "." + _sectionNum + " " + label;
|
||
newVoce.Pagina = _corePage;
|
||
}
|
||
|
||
_strutturaIndice.VoceIndice.AddVoceIndiceRow(newVoce);
|
||
}
|
||
|
||
public void setSezHeader(string label)
|
||
{
|
||
int m = (int)((float)label.Length / 100) + 1;
|
||
if (this.checkMargin((m - 1) * 20)) this.addPage();
|
||
FormattedTextArea text = new FormattedTextArea(label, _margineLEFT - 5, _writableY - 10, 520, m * 20, new FontFamily("pipp", _verdana, _verdanaBold, _verdanaItalic, _verdanaBoldItalic), 9, false);
|
||
text.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Justify;
|
||
text.Height = text.GetRequiredHeight();
|
||
_page.Elements.Add(text);
|
||
_writableY += text.Height + 10;
|
||
}
|
||
|
||
public void setSezFooter(string label, float y)
|
||
{
|
||
if (_writableYPot > y)
|
||
y = _writableYPot;
|
||
int m = (int)((float)label.Length / 100) + 1;
|
||
FormattedTextArea text = new FormattedTextArea(label, _margineLEFT - 5, _writableY + y, 520, m * 20, new FontFamily("pipp", _verdana), 7, false);
|
||
text.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Justify;
|
||
_page.Elements.Add(text);
|
||
_writableY += (m * 10);
|
||
}
|
||
|
||
public void setSezFooter(string label, float y, float spaceX)
|
||
{
|
||
int m = (int)((float)label.Length / 100) + 1;
|
||
FormattedTextArea text = new FormattedTextArea(label, _margineLEFT - 5 + spaceX, _writableY + y, 520 - spaceX, m * 20, new FontFamily("pipp", _verdana), 7, false);
|
||
text.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Justify;
|
||
_page.Elements.Add(text);
|
||
_writableY += (m * 10);
|
||
}
|
||
|
||
public void setSezFooter(string label, float y, float spaceX, float font)
|
||
{
|
||
int m = (int)((float)label.Length / 100) + 1;
|
||
FormattedTextArea text = new FormattedTextArea(label, _margineLEFT - 5 + spaceX, _writableY + y, 520 - spaceX, m * 20, new FontFamily("pipp", _verdana), font, false);
|
||
text.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Justify;
|
||
_page.Elements.Add(text);
|
||
_writableY += (m * 10);
|
||
}
|
||
|
||
public void setHeaderSpace(int space)
|
||
{
|
||
_writableY += space;
|
||
}
|
||
//==============================================================
|
||
public void setSezTitoloDiagnosi(string label, string classeSpecificaDaFixare = null)
|
||
{
|
||
if (this.checkMargin(50)) this.addPage();
|
||
|
||
int baseGap = 15;
|
||
//Aumento lo spazio per diminuire la distanza tra il titolo e l'inizio del paragrafo
|
||
switch (classeSpecificaDaFixare)
|
||
{
|
||
case "S151":
|
||
baseGap = 53;
|
||
break;
|
||
case "S152":
|
||
baseGap = 65;
|
||
break;
|
||
case "S177":
|
||
baseGap = 45;
|
||
break;
|
||
case "S170":
|
||
baseGap = 60;
|
||
break;
|
||
case "FD151":
|
||
baseGap = 33;
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
if (_reportType.TipoReport.ToString() == "DIAGNOSI" && classeSpecificaDaFixare == "S177") baseGap = 25;
|
||
|
||
if (!string.IsNullOrWhiteSpace(label))
|
||
{
|
||
if (_activeIndex)
|
||
{
|
||
updateIndice(label, "section");
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(_chapterNum + "." + _sectionNum + " " + label, _margineLEFT, _writableY - baseGap, 530, 12, _verdanaBold, 12, ceTe.DynamicPDF.CmykColor.Black));
|
||
_sectionNum++;
|
||
}
|
||
else
|
||
{
|
||
//if (_tipologia != "report")
|
||
// _page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(label, _margineLEFT, _writableY - 15, 530, 12, _verdanaBold, 12, ceTe.DynamicPDF.CmykColor.Black));
|
||
//else
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(_chapterNum + "." + _sectionNum + " " + label, _margineLEFT, _writableY - baseGap, 530, 12, _verdanaBold, 12, ceTe.DynamicPDF.CmykColor.Black));
|
||
_sectionNum++;
|
||
}
|
||
|
||
//Aggiusto l'altezza delle classi per recuperare spazio tra i testi
|
||
if (_reportType.TipoReport.ToString() == "DIAGNOSI" && classeSpecificaDaFixare == "S177")
|
||
{
|
||
_writableY += 25;
|
||
}
|
||
else
|
||
{
|
||
switch (classeSpecificaDaFixare)
|
||
{
|
||
case "S177":
|
||
_writableY += 10;
|
||
break;
|
||
case "S151":
|
||
_writableY += 25;
|
||
break;
|
||
case "FD151":
|
||
_writableY += 5;
|
||
break;
|
||
case "FD177":
|
||
_writableY += 50;
|
||
break;
|
||
case "FD178":
|
||
_writableY += 50;
|
||
break;
|
||
default:
|
||
_writableY += 25;
|
||
break;
|
||
}
|
||
}
|
||
|
||
//if (!string.IsNullOrEmpty(classeSpecificaDaFixare) && classeSpecificaDaFixare == "S177")
|
||
//{
|
||
// _writableY += 10;
|
||
//}
|
||
//else
|
||
//{
|
||
// _writableY += 25;
|
||
//}
|
||
|
||
}
|
||
}
|
||
public void setSezTitolo(string label)
|
||
{
|
||
if (this.checkMargin(50)) this.addPage();
|
||
|
||
if (label != " " && label != "")
|
||
{
|
||
if (_activeIndex)
|
||
{
|
||
updateIndice(label, "section");
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(_chapterNum + "." + _sectionNum + " " + label, _margineLEFT, _writableY - 15, 530, 12, _verdanaBold, 11, ceTe.DynamicPDF.CmykColor.Black));
|
||
_sectionNum++;
|
||
}
|
||
else
|
||
{
|
||
//if (_tipologia != "report")
|
||
// _page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(label, _margineLEFT, _writableY - 15, 530, 12, _verdanaBold, 12, ceTe.DynamicPDF.CmykColor.Black));
|
||
//else
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(_chapterNum + "." + _sectionNum + " " + label, _margineLEFT, _writableY - 15, 530, 12, _verdanaBold, 11, ceTe.DynamicPDF.CmykColor.Black));
|
||
_sectionNum++;
|
||
}
|
||
|
||
//_writableY += 25;
|
||
_writableY += 15;
|
||
}
|
||
}
|
||
public void setSezTitoloCustom(string label)
|
||
{
|
||
if (this.checkMargin(50)) this.addPage();
|
||
|
||
if (label != " " && label != "")
|
||
{
|
||
if (_activeIndex)
|
||
{
|
||
updateIndice(label, "section");
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(_chapterNum + "." + _sectionNum + " " + label, _margineLEFT, _writableY - 35, 530, 12, _verdanaBold, 11, ceTe.DynamicPDF.CmykColor.Black));
|
||
_sectionNum++;
|
||
}
|
||
else
|
||
{
|
||
//if (_tipologia != "report")
|
||
// _page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(label, _margineLEFT, _writableY - 15, 530, 12, _verdanaBold, 12, ceTe.DynamicPDF.CmykColor.Black));
|
||
//else
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(_chapterNum + "." + _sectionNum + " " + label, _margineLEFT, _writableY - 15, 530, 12, _verdanaBold, 11, ceTe.DynamicPDF.CmykColor.Black));
|
||
_sectionNum++;
|
||
}
|
||
|
||
//_writableY += 25;
|
||
_writableY += 15;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Scrive il titolo della sezione senza aggiungere l'indicizzazione.
|
||
/// usato nella 102
|
||
/// </summary>
|
||
/// <param name="label"></param>
|
||
public void setSezTitoloWithoutNumber(string label)
|
||
{
|
||
if (this.checkMargin(50))
|
||
this.addPage();
|
||
|
||
if (label != " " && label != "")
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(label, _margineLEFT, _writableY - 15, 530, 12, _verdanaBold, 10, ceTe.DynamicPDF.CmykColor.Black));
|
||
_writableY += 15;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Scrive il titolo del paragrafo in modalit<69> indicizzata.
|
||
/// Elimina la spaziatura di 25 pixel tra il titolo e il testo successivo e lascia uno spazio di 10 pixel.
|
||
/// </summary>
|
||
/// <param name="label"></param>
|
||
public void setSezTitolo(string label, bool eliminaspaziatura)
|
||
{
|
||
this.setSezTitolo(label);
|
||
if (eliminaspaziatura)
|
||
_writableY -= 15;
|
||
|
||
}
|
||
|
||
public void setSezTitolo(string label, float Height)
|
||
{
|
||
if ((_writableY + Height + 20) > (_pageHeight - _margineDOWN))
|
||
this.addPage();
|
||
|
||
this.setSezTitolo(label);
|
||
}
|
||
//==============================================================
|
||
public void setTitolo(string label, float Height)
|
||
{
|
||
if (label != string.Empty)
|
||
{
|
||
if ((_writableY + Height + 20) > (_pageHeight - _margineDOWN))
|
||
this.addPage();
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(label, _margineLEFT - 5, _writableY - 15, 530, 12, _verdanaBold, 12, ceTe.DynamicPDF.CmykColor.Black));
|
||
_writableY += 25;
|
||
}
|
||
}
|
||
//==============================================================
|
||
|
||
/// <summary>
|
||
/// Scrive il titolo del paragrafo in modalit<69> non indicizzata.
|
||
/// Aggiunge 25 pixel di spazio sulla Y.
|
||
/// </summary>
|
||
/// <param name="label"></param>
|
||
public void setTitolo(string label)
|
||
{
|
||
if (this.checkMargin(60)) this.addPage();
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(label, _margineLEFT - 5, _writableY - 15, 530, 12, _verdanaBold, 12, ceTe.DynamicPDF.CmykColor.Black));
|
||
_writableY += 25;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// Scrive sulla pagina il testo passato in input.
|
||
/// Il tipo di carattere usato <20> quello del testo introduttivo delle sezioni.
|
||
/// Dimensione del carattere prefissata a 7
|
||
/// </summary>
|
||
/// <param name="label">testo da scrivere</param>
|
||
/// <param name="y">y su cui verr<72> scritto il testo</param>
|
||
/// <param name="spaceX">larghezza della label su cui verr<72> scritto il testo.</param>
|
||
public void writeText(string label, float y, float spaceX)
|
||
{
|
||
int m = (int)((float)label.Length / 100) + 1;
|
||
FormattedTextArea text = new FormattedTextArea(label, _margineLEFT - 5 + spaceX, y, 520 - spaceX, m * 20, new FontFamily("pipp", _verdana), 7, false);
|
||
text.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Justify;
|
||
_page.Elements.Add(text);
|
||
}
|
||
|
||
public void writeText(float x, float y, string label, float size, float larghezzalabel, ceTe.DynamicPDF.TextAlign align)
|
||
{
|
||
int m = (int)((float)label.Length / 100) + 1;
|
||
FormattedTextArea text = new FormattedTextArea(label, x, y, larghezzalabel, m * 20, new FontFamily("pipp", _verdana), size, false);
|
||
text.Style.Paragraph.Align = align;
|
||
_page.Elements.Add(text);
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// Scrive sulla pagina il testo passato in input.
|
||
/// Il tipo di carattere usato <20> quello del testo introduttivo delle sezioni.
|
||
/// Larghezza della label su cui verr<72> scritto il testo fissato a 200
|
||
/// </summary>
|
||
/// <param name="x">x</param>
|
||
/// <param name="y">y</param>
|
||
/// <param name="label">testo da scrivere</param>
|
||
/// <param name="size">dimensione del testo</param>
|
||
public void writeText(float x, float y, string label, float size)
|
||
{
|
||
int m = (int)((float)label.Length / 100) + 1;
|
||
FormattedTextArea text = new FormattedTextArea(label, x, y, 200, m * 20, new FontFamily("pipp", _verdana), size, false);
|
||
text.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Justify;
|
||
_page.Elements.Add(text);
|
||
}
|
||
|
||
/// <summary>
|
||
/// Scrive sulla pagina il testo passato in input.
|
||
/// Il tipo di carattere usato <20> quello del testo introduttivo delle sezioni.
|
||
/// Larghezza della label su cui verr<72> scritto il testo fissato a 200
|
||
/// </summary>
|
||
/// <param name="x">x</param>
|
||
/// <param name="y">y</param>
|
||
/// <param name="label">testo da scrivere</param>
|
||
/// <param name="size">dimensione del testo</param>
|
||
/// <param name="larghezzalabel">larghezza della label su cui viene scritto il testo.</param>
|
||
public void writeText(float x, float y, string label, float size, float larghezzalabel)
|
||
{
|
||
int m = (int)((float)label.Length / 100) + 1;
|
||
FormattedTextArea text = new FormattedTextArea(label, x, y, larghezzalabel, m * 20, new FontFamily("pipp", _verdana), size, false);
|
||
text.Style.Paragraph.Align = ceTe.DynamicPDF.TextAlign.Justify;
|
||
_page.Elements.Add(text);
|
||
}
|
||
|
||
public void InsertGraficoS96(Chart grafico, float x, float y)
|
||
{
|
||
try
|
||
{
|
||
_imgGrafico = new System.IO.MemoryStream();
|
||
//Preserve the orginal width and height for the Chart
|
||
|
||
float w = (float)(grafico.Width.Value);
|
||
float h = (float)grafico.Height.Value;
|
||
|
||
//Set the sutiable chart resoltion -- default is 96 DPI
|
||
grafico.ImageResolution = 300;
|
||
//save the chart as image
|
||
grafico.Save(_imgGrafico, ChartImageFormat.Png);
|
||
Image img = new Image(_imgGrafico, x, y, 1);
|
||
//set the orginal width and height to the chart image
|
||
img.Width = w;
|
||
img.Height = h;
|
||
_page.Elements.Add(img);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
try
|
||
{
|
||
logger.Error(String.Concat(ex.Message, " ", grafico.ToString()));
|
||
}
|
||
catch { }
|
||
}
|
||
finally
|
||
{
|
||
grafico.Dispose();
|
||
}
|
||
|
||
}
|
||
|
||
|
||
public void InsertGraficoS169(Chart grafico, float x, float y)
|
||
{
|
||
try
|
||
{
|
||
_imgGrafico = new System.IO.MemoryStream();
|
||
//Preserve the orginal width and height for the Chart
|
||
|
||
float w = (float)(grafico.Width.Value);
|
||
float h = (float)grafico.Height.Value;
|
||
|
||
//Set the sutiable chart resoltion -- default is 96 DPI
|
||
grafico.ImageResolution = 300;
|
||
//save the chart as image
|
||
grafico.Save(_imgGrafico, ChartImageFormat.Png);
|
||
Image img = new Image(_imgGrafico, x, y, 1);
|
||
//set the orginal width and height to the chart image
|
||
img.Width = w;
|
||
img.Height = h;
|
||
_page.Elements.Add(img);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
try
|
||
{
|
||
logger.Error(String.Concat(ex.Message, " ", grafico.ToString()));
|
||
}
|
||
catch { }
|
||
}
|
||
finally
|
||
{
|
||
grafico.Dispose();
|
||
}
|
||
|
||
}
|
||
|
||
public void InsertGraficoS132(Chart grafico, float x, float y)
|
||
{
|
||
try
|
||
{
|
||
_imgGrafico = new System.IO.MemoryStream();
|
||
//Preserve the orginal width and height for the Chart
|
||
|
||
float w = (float)(grafico.Width.Value);
|
||
float h = (float)grafico.Height.Value;
|
||
|
||
//Set the sutiable chart resoltion -- default is 96 DPI
|
||
grafico.ImageResolution = 300;
|
||
//save the chart as image
|
||
grafico.Save(_imgGrafico, ChartImageFormat.Png);
|
||
Image img = new Image(_imgGrafico, x, y, 1);
|
||
//set the orginal width and height to the chart image
|
||
img.Width = w;
|
||
img.Height = h;
|
||
_page.Elements.Add(img);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
try
|
||
{
|
||
logger.Error(String.Concat(ex.Message, " ", grafico.ToString()));
|
||
}
|
||
catch { }
|
||
}
|
||
finally
|
||
{
|
||
grafico.Dispose();
|
||
}
|
||
|
||
}
|
||
|
||
|
||
public void InsertGrafico(Chart grafico, float x, float y, int resolution)
|
||
{
|
||
try
|
||
{
|
||
|
||
Image img = null;
|
||
//Preserve the orginal width and height for the Chart
|
||
float w = (float)(grafico.Width.Value);
|
||
float h = (float)grafico.Height.Value;
|
||
//Set the sutiable chart resoltion -- default is 96 DPI
|
||
grafico.ImageResolution = resolution;
|
||
using (System.IO.Stream _imgGrafico_ = new System.IO.MemoryStream())
|
||
{
|
||
//save the chart as image
|
||
grafico.Save(_imgGrafico_, ChartImageFormat.Png);
|
||
//grafico.Save(@"C:\Ftp\a"+Guid.NewGuid().ToString()+".png", ChartImageFormat.Png);
|
||
//Thread.Sleep(100);
|
||
img = new Image(_imgGrafico_, x, y, 1);
|
||
img.Width = w;
|
||
img.Height = h;
|
||
}
|
||
//set the orginal width and height to the chart image
|
||
_page.Elements.Add(img);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
try
|
||
{
|
||
logger.Error(String.Concat(ex.Message, " ", grafico.ToString()));
|
||
}
|
||
catch { }
|
||
}
|
||
finally
|
||
{
|
||
grafico.Dispose();
|
||
}
|
||
|
||
}
|
||
|
||
public System.Drawing.Bitmap CropImage(System.Drawing.Bitmap b, System.Drawing.Rectangle r)
|
||
{
|
||
System.Drawing.Bitmap nb = new System.Drawing.Bitmap(r.Width, r.Height);
|
||
nb.SetResolution(b.HorizontalResolution, b.VerticalResolution);
|
||
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(nb);
|
||
g.DrawImage(b, -r.X, -r.Y);
|
||
return nb;
|
||
}
|
||
|
||
public void InsertGrafico(Chart grafico, float x, float y, int resolution, float bottomCutPercentage)
|
||
{
|
||
try
|
||
{
|
||
//S85
|
||
Image img = null;
|
||
//Preserve the orginal width and height for the Chart
|
||
float w = (float)(grafico.Width.Value);
|
||
float h = (float)grafico.Height.Value;
|
||
//Set the sutiable chart resoltion -- default is 96 DPI
|
||
grafico.ImageResolution = resolution;
|
||
if (!Directory.Exists(@"C:\Temp\Trimestrale"))
|
||
Directory.CreateDirectory(@"C:\Temp\Trimestrale");
|
||
|
||
|
||
string filename1 = Guid.NewGuid().ToString() + ".png";
|
||
string filename2 = Guid.NewGuid().ToString() + ".png";
|
||
string path1 = @"C:\Temp\Trimestrale\" + filename1;
|
||
string path2 = @"C:\Temp\Trimestrale\" + filename2;
|
||
|
||
while (File.Exists(path1))
|
||
{
|
||
filename1 = Guid.NewGuid().ToString() + ".png";
|
||
path1 = @"C:\Temp\Trimestrale\" + filename1;
|
||
}
|
||
|
||
while (File.Exists(path2))
|
||
{
|
||
filename2 = Guid.NewGuid().ToString() + ".png";
|
||
path2 = @"C:\Temp\Trimestrale\" + filename2;
|
||
}
|
||
|
||
try { logger.Info("S85" + path1 + path2); } catch (Exception ex) { logger.Error("S85 " + ex.Message); }
|
||
|
||
grafico.Save(path1, ChartImageFormat.Png);
|
||
var tmpImg = System.Drawing.Image.FromFile(path1);
|
||
tmpImg = CropImage((System.Drawing.Bitmap)tmpImg, new System.Drawing.Rectangle(0, 0, (int)tmpImg.Width, (int)(tmpImg.Height - (bottomCutPercentage * tmpImg.Height / 100))));
|
||
tmpImg.Save(path2);
|
||
|
||
img = new Image(path2, x, y, 1);
|
||
img.Width = w;
|
||
img.Height = h - (h * bottomCutPercentage / 100);
|
||
_page.Elements.Add(img);
|
||
|
||
try
|
||
{
|
||
File.Delete(path1);
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
logger.Info(ex.Message);
|
||
}
|
||
|
||
try
|
||
{
|
||
File.Delete(path2);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
logger.Info(ex.Message);
|
||
}
|
||
//using (System.IO.Stream _imgGrafico_ = new System.IO.MemoryStream())
|
||
//{
|
||
// //save the chart as image
|
||
// grafico.Save(_imgGrafico_, ChartImageFormat.Png);
|
||
// //grafico.Save(@"C:\Ftp\a"+Guid.NewGuid().ToString()+".png", ChartImageFormat.Png);
|
||
// //Thread.Sleep(100);
|
||
// img = new Image(_imgGrafico_, x, y, 1);
|
||
// img.Width = w;
|
||
// img.Height = h;
|
||
//}
|
||
//set the orginal width and height to the chart image
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
try
|
||
{
|
||
logger.Error(String.Concat(ex.Message + ((ex.InnerException != null) ? ex.InnerException.Message : ""), " ", grafico.ToString()));
|
||
}
|
||
catch
|
||
{
|
||
logger.Error(ex.Message);
|
||
}
|
||
}
|
||
finally
|
||
{
|
||
grafico.Dispose();
|
||
}
|
||
|
||
}
|
||
|
||
public void InsertGrafico(Chart grafico, float x, float y)
|
||
{
|
||
_imgGrafico = new System.IO.MemoryStream();
|
||
grafico.Save(_imgGrafico, ChartImageFormat.Png);
|
||
Image img = new Image(_imgGrafico, x, y, 1);
|
||
//img.SetDpi(300);
|
||
_page.Elements.Add(img);
|
||
}
|
||
|
||
public void Grilia(int R)
|
||
{
|
||
|
||
|
||
float X = 0;
|
||
float Y = -3;
|
||
|
||
string str = " 0" + new string('-', 300);
|
||
|
||
for (int i = 0; i < 100; i++)
|
||
{
|
||
str = " " + (Y + 3) + new string('-', 300);
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(str, X, getLastPos() + Y, 900F, 50F, Globals.OpenTypeFontVerdana, 4));
|
||
Y += 2;
|
||
str = " " + new string('-', 300);
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(str, X, getLastPos() + Y, 900F, 50F, Globals.OpenTypeFontVerdana, 4));
|
||
Y += 2;
|
||
}
|
||
X -= 1;
|
||
for (int i = 0; i < 100; i++)
|
||
{
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("|" + X.ToString(), getMargineLeft() + X, getLastPos() + R, 900F, 50F, Globals.OpenTypeFontVerdana, 4));
|
||
X += 5;
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("|", getMargineLeft() + X, getLastPos() + R + 3, 900F, 50F, Globals.OpenTypeFontVerdana, 4));
|
||
X += 5;
|
||
}
|
||
|
||
}
|
||
public void InsertTable(PageElement elem)
|
||
{
|
||
_page.Elements.Add(elem);
|
||
}
|
||
|
||
|
||
|
||
public void changePage(int x, float y)
|
||
{
|
||
//disegna freccia pi<70> scritta.
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("continua alla pagina successiva", x - 75, _pageHeight - _margineDOWN - 6, 200, 12, _verdana, 7, ceTe.DynamicPDF.CmykColor.Black));
|
||
string relativePath = UtilityManager.getAppSetting("ChangePage");
|
||
System.Reflection.Assembly thisExe;
|
||
thisExe = System.Reflection.Assembly.GetExecutingAssembly();
|
||
System.IO.Stream file = thisExe.GetManifestResourceStream(relativePath);
|
||
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(file, x + _margineLEFT, _pageHeight - _margineDOWN - 5, 0.2F));
|
||
this.addPage();
|
||
}
|
||
|
||
/// <summary>
|
||
/// Disegna la frecce e il testo "continua alla pagina successiva" di rimando del salto pagina delle tabelle.
|
||
/// X e Y sono gia definite.
|
||
/// X=435,Y=719.
|
||
/// </summary>
|
||
public void changePage()
|
||
{
|
||
int y = 730;
|
||
|
||
if (_notaPieDiPagina.Length > 0)
|
||
y -= 23;
|
||
//disegna freccia pi<70> scritta.
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("continua alla pagina successiva", 450, y, 200, 12, _verdana, 7, ceTe.DynamicPDF.CmykColor.Black));
|
||
string relativePath = UtilityManager.getAppSetting("ChangePage");
|
||
System.Reflection.Assembly thisExe;
|
||
thisExe = System.Reflection.Assembly.GetExecutingAssembly();
|
||
System.IO.Stream file = thisExe.GetManifestResourceStream(relativePath);
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(file, 435, y - 1, 0.2F));
|
||
this.addPage();
|
||
}
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// Disegna la frecce e il testo "continua alla pagina successiva" di rimando del salto pagina delle tabelle.
|
||
/// Disegna le note con posizionamento "Pi<50>DiPagina" aggiunte alla pagina(document).
|
||
/// X fissata a 435, la Y <20> variabile a seconda delle Note presenti a pi<70> di pagina. (Decremento di 15 pixel per ogni nota presente o di 30 a seconda della lunghezza della nota.)
|
||
/// Utilizzato solo dalla classe Tabella.
|
||
/// Non sono all'ultima pagina della tabella ma sto ancora facendo il saltopagina.
|
||
/// </summary>
|
||
public void changePage(string idtabella)
|
||
{
|
||
int y = 739;
|
||
|
||
//_note.RemoveAll(delegate(Nota t) { return t.IdTabellaAssociata != idtabella; }); // rimuovo le note non appartenenti alla tabella che sto stampando.
|
||
|
||
// in caso di presenza di note a pi<70> di pagina decremento la y su cui stampo la label di cambio pagina.
|
||
foreach (Nota objNota in _note.FindAll(delegate (Nota t) { return t.Posizionamento == Nota.TipologiaPosizionamento.PieDiPagina; }))
|
||
{
|
||
if (objNota.Testo.Length < 200)
|
||
y -= 15;
|
||
else
|
||
y -= 30;
|
||
}
|
||
|
||
|
||
//disegna freccia pi<70> scritta.
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("continua alla pagina successiva", 450, y, 200, 12, _verdana, 7, ceTe.DynamicPDF.CmykColor.Black));
|
||
string relativePath = UtilityManager.getAppSetting("ChangePage");
|
||
System.Reflection.Assembly thisExe;
|
||
thisExe = System.Reflection.Assembly.GetExecutingAssembly();
|
||
System.IO.Stream file = thisExe.GetManifestResourceStream(relativePath);
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(file, 435, y - 1, 0.2F));
|
||
|
||
|
||
// aggiungo la pagina
|
||
this.addPage(idtabella, false); // se passa sicuramente la tabella sta facendo il saltopagina
|
||
|
||
}
|
||
|
||
|
||
public void nextPage(float x)
|
||
{
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("continua dalla pagina precedente", x + 10, _margineUP - 31, 200, 12, _verdana, 7, ceTe.DynamicPDF.CmykColor.Black));
|
||
string relativePath = UtilityManager.getAppSetting("ChangePage");
|
||
System.Reflection.Assembly thisExe;
|
||
thisExe = System.Reflection.Assembly.GetExecutingAssembly();
|
||
System.IO.Stream file = thisExe.GetManifestResourceStream(relativePath);
|
||
|
||
_page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(file, x - 5, _margineUP - 33, 0.2F));
|
||
_writableY += 5;
|
||
}
|
||
//==============================================================
|
||
/// <summary>
|
||
/// Aggiunge una nuova pagina al documento
|
||
/// </summary>
|
||
/// <param name="doc"></param>
|
||
/// <returns></returns>
|
||
public void addPage()
|
||
{
|
||
StampaNote(); // stampo tutte le note aggiunte al documento prima di aggiungere una nuova pagina
|
||
|
||
_margineDOWN = 105;
|
||
_note.Clear(); // azzero la collezione delle note.
|
||
_ynotapiedipagina = 740;
|
||
|
||
if (_corePage == _currentPage)
|
||
{
|
||
|
||
this.setFilePath();
|
||
this.SetTemplate(_page);
|
||
this.setPageFooter(_page);
|
||
//if (_nomeCliente)
|
||
this.setPageFooterNomeCliente(_page);
|
||
//this.setDisclaimer(page);
|
||
_corePage++;
|
||
_currentPage = _corePage;
|
||
_writableYold = _writableY;
|
||
_writableY = _margineUP;
|
||
}
|
||
else
|
||
{
|
||
_page = _backPage;
|
||
_currentPage = _corePage;
|
||
_writableY = _margineUP;
|
||
}
|
||
|
||
if (!_saltoPagina)
|
||
_writableYPot = 0;
|
||
|
||
}
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// Aggiunge una nuova pagina al documento.
|
||
/// Utilizzato solo quando si sta stampando una tabella e questa ha il saltopagina.
|
||
/// Questa funzione <20> richiamata solo dalla funzione "changePage" ovvero solo quando la tabella sta effettuando il saltopagina.
|
||
/// </summary>
|
||
/// <param name="idtabella"></param>
|
||
/// <param name="eliminaNote"></param>
|
||
private void addPage(string idtabella, bool eliminaNote)
|
||
{
|
||
StampaNote(idtabella);
|
||
|
||
_ynotapiedipagina = 740;
|
||
|
||
#region Aggiungo la pagina al documento
|
||
|
||
_margineDOWN = 105;
|
||
|
||
if (_corePage == _currentPage)
|
||
{
|
||
|
||
this.setFilePath();
|
||
this.SetTemplate(_page);
|
||
this.setPageFooter(_page);
|
||
this.setPageFooterNomeCliente(_page);
|
||
//this.setDisclaimer(page);
|
||
_corePage++;
|
||
_currentPage = _corePage;
|
||
_writableYold = _writableY;
|
||
_writableY = _margineUP;
|
||
}
|
||
else
|
||
{
|
||
_page = _backPage;
|
||
_currentPage = _corePage;
|
||
_writableY = _margineUP;
|
||
|
||
}
|
||
if (!_saltoPagina)
|
||
_writableYPot = 0;
|
||
|
||
|
||
#endregion
|
||
|
||
// in questo caso le note associate alla tabella (che sta facendo il saltopagina) solo quelle con posizionamento a Pi<50>DiPagina
|
||
// e vanno riportate anche nella nuova pagina.
|
||
// Rimuovo tutte le note perche sono state gi<67> stampate e lascio quelle associate alla tabella che fa il saltopagina.
|
||
if (eliminaNote)
|
||
_note.Clear();
|
||
else
|
||
_note.RemoveAll(delegate (Nota obj) { return (obj.IdTabellaAssociata != idtabella); });
|
||
|
||
}
|
||
|
||
public void RemoveLastPage(int index)
|
||
{
|
||
_core.RemoveAt(index);
|
||
//int c = _index.Count;
|
||
//int v = _indexPage;
|
||
}
|
||
|
||
/// <summary>
|
||
/// OK
|
||
/// </summary>
|
||
/// <param name="_page"></param>
|
||
private void setFilePath()
|
||
{
|
||
string relativePath = "";
|
||
//if (_tipologia != "report")
|
||
//{
|
||
|
||
//System.Reflection.Assembly thisExe;
|
||
//thisExe = System.Reflection.Assembly.GetExecutingAssembly();
|
||
|
||
//if (_dataThread.Rete == "F")
|
||
//{
|
||
// //FC 26062015 Aggionamento nuova Ragione Sociale
|
||
// //_banca = "Banca Fideuram";
|
||
// _banca = "Fideuram";
|
||
// relativePath = UtilityManager.getAppSetting("TemplateReport");
|
||
//}
|
||
//else
|
||
//{
|
||
// _banca = "Sanpaolo Invest";
|
||
// relativePath = UtilityManager.getAppSetting("TemplateReportSP");
|
||
//}
|
||
|
||
//System.IO.Stream file = thisExe.GetManifestResourceStream(relativePath);
|
||
|
||
|
||
|
||
System.IO.Stream file = _templateProvider.TemplateReport;
|
||
//}
|
||
//else
|
||
//{
|
||
// if (_rete == "F")
|
||
// {
|
||
// _banca = "Banca Fideuram";
|
||
// relativePath = UtilityManager.getAppSetting("TemplateReport");
|
||
// }
|
||
// else
|
||
// {
|
||
// _banca = "Sanpaolo Invest";
|
||
// relativePath = UtilityManager.getAppSetting("TemplateReportSP");
|
||
// }
|
||
//}
|
||
|
||
PdfDocument pp = new PdfDocument(file);
|
||
_page = new ImportedPage(pp.GetPage(1));
|
||
if (!(_page == null)) _core.Add(_page);
|
||
}
|
||
//==============================================================
|
||
|
||
//==============================================================
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
/// <param name="heightSection"></param>
|
||
/// <returns></returns>
|
||
public Boolean checkMargin(float heightSection)
|
||
{
|
||
//controlla se la sezione pu<70> essere scritta nella pagina corrente
|
||
return ((_writableY + heightSection) >= (_pageHeight - _margineDOWN));
|
||
}
|
||
|
||
/// <summary>
|
||
/// Verifica se a partire dalla posizione y passata in input, l'altezza heightSection entra
|
||
/// nella pagina corrente.
|
||
/// </summary>
|
||
/// <param name="y"></param>
|
||
/// <param name="heightSection"></param>
|
||
/// <returns></returns>
|
||
public Boolean checkMargin(float y, float heightSection)
|
||
{
|
||
//controlla se la sezione pu<70> essere scritta nella pagina corrente
|
||
return ((y + heightSection) >= (_pageHeight - _margineDOWN));
|
||
}
|
||
public int getWritableRow(float heightRow, bool header)
|
||
{
|
||
float heightSection = 0;
|
||
if (header) heightSection += heightRow;
|
||
int cont = 0;
|
||
|
||
while ((_writableY + cont * heightRow + heightSection) < (_pageHeight - _margineDOWN))
|
||
{
|
||
cont++;
|
||
}
|
||
//controlla se la sezione pu<70> essere scritta nella pagina corrente
|
||
return cont - 1;
|
||
}
|
||
|
||
|
||
public int NumLastPage
|
||
{
|
||
get
|
||
{
|
||
return _numlastpage;
|
||
}
|
||
set
|
||
{
|
||
_numlastpage = value;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// Indica se la nota a pi<70> di pagina <20> presente.
|
||
/// </summary>
|
||
public bool FlagNotaPieDiPagina
|
||
{
|
||
get
|
||
{
|
||
return _flagnotaPieDiPagina;
|
||
}
|
||
set
|
||
{
|
||
_flagnotaPieDiPagina = value;
|
||
}
|
||
}
|
||
|
||
|
||
|
||
public int CurrentPage
|
||
{
|
||
get
|
||
{
|
||
return _currentPage;
|
||
}
|
||
set
|
||
{
|
||
_currentPage = value;
|
||
}
|
||
}
|
||
|
||
public string AsteriscoVarProxati
|
||
{
|
||
get
|
||
{
|
||
return _AsteriscoVarProxato;
|
||
}
|
||
set
|
||
{
|
||
_AsteriscoVarProxato = value;
|
||
}
|
||
}
|
||
|
||
public string AsteriscoGradoCopertura
|
||
{
|
||
get
|
||
{
|
||
return _AsteriscoGradoCopertura;
|
||
}
|
||
set
|
||
{
|
||
_AsteriscoGradoCopertura = value;
|
||
}
|
||
}
|
||
|
||
|
||
public int NumNotePiePaginaVarProxato
|
||
{
|
||
get
|
||
{
|
||
return _numNotePiePaginaVarProxato;
|
||
}
|
||
set
|
||
{
|
||
_numNotePiePaginaVarProxato = value;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// Imposta o ottiene la lista di note presenti nel documento.
|
||
/// </summary>
|
||
public ListaNote Note
|
||
{
|
||
get { return _note; }
|
||
set { _note = value; }
|
||
}
|
||
|
||
|
||
public string TipologiaDocumento
|
||
{
|
||
get
|
||
{
|
||
return _tipologia;
|
||
}
|
||
set
|
||
{
|
||
_tipologia = value;
|
||
}
|
||
}
|
||
|
||
public string Banca
|
||
{
|
||
get
|
||
{
|
||
return _banca;
|
||
}
|
||
set
|
||
{
|
||
_banca = value;
|
||
}
|
||
}
|
||
|
||
public int NumPage
|
||
{
|
||
get
|
||
{
|
||
return _documentoFinale.Pages.Count;
|
||
}
|
||
}
|
||
//public bool Navigatore
|
||
//{
|
||
// get
|
||
// {
|
||
// return _navigatore;
|
||
// }
|
||
// set
|
||
// {
|
||
// _navigatore = value;
|
||
// }
|
||
//}
|
||
|
||
//public string TipoReport
|
||
//{
|
||
// get
|
||
// {
|
||
// return _tipoReport;
|
||
// }
|
||
// set
|
||
// {
|
||
// _tipoReport = value;
|
||
// }
|
||
//}
|
||
|
||
public bool Glossario
|
||
{
|
||
get
|
||
{
|
||
return _glossario;
|
||
}
|
||
set
|
||
{
|
||
_glossario = value;
|
||
}
|
||
}
|
||
|
||
//public int Modalit<69>Anonima
|
||
//{
|
||
// get
|
||
// {
|
||
// return _modalitaAnonima;
|
||
// }
|
||
// set
|
||
// {
|
||
// _modalitaAnonima = value;
|
||
// }
|
||
//}
|
||
|
||
public string NotaPieDiPagina
|
||
{
|
||
get
|
||
{
|
||
return _notaPieDiPagina;
|
||
}
|
||
set
|
||
{
|
||
_notaPieDiPagina = value;
|
||
}
|
||
}
|
||
}
|
||
|
||
public enum TipoNota
|
||
{
|
||
VarProxato,
|
||
GradoCopertura
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// Rappresentazione dell'oggetto nota.
|
||
/// </summary>
|
||
public class Nota
|
||
{
|
||
/// <summary>
|
||
/// Lista della tipologia delle possibili note da aggiungere al documento.
|
||
/// </summary>
|
||
public enum TipologiaNota
|
||
{
|
||
NonImpostato,
|
||
GradoCopertura,
|
||
VarProxato,
|
||
RendimentoSottoscrizione_Maggiore_1_Anno,
|
||
RendimentoSottoscrizione_Minore_1_Anno,
|
||
RendimentoSottoscrizione_Maggiore_E_Minore_1Anno
|
||
}
|
||
|
||
/// <summary>
|
||
/// Lista delle tipologie di posizionamento dell'oggetto nota.
|
||
/// </summary>
|
||
public enum TipologiaPosizionamento
|
||
{
|
||
NonImpostato,
|
||
PieDiPagina,
|
||
PieDiSezione
|
||
}
|
||
|
||
/// <summary>
|
||
/// Lista del tipo di stato della Nota. Indica se la Nota <20> da stampare o se <20> stata stampata.
|
||
/// </summary>
|
||
public enum StatoNota
|
||
{
|
||
DaStampare,
|
||
Stampata
|
||
|
||
}
|
||
|
||
|
||
private TipologiaNota _tiponota;
|
||
private TipologiaPosizionamento _posizionamento;
|
||
private StatoNota _stato;
|
||
|
||
private string _testo = string.Empty;
|
||
private int _numeroasterisco = 0;
|
||
private string _idtabellaassociata;
|
||
|
||
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// Testo
|
||
/// </summary>
|
||
public string Testo
|
||
{
|
||
get { return _testo; }
|
||
set { _testo = value; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// Imposta o ottiente il posizionamento dell'oggetto Nota
|
||
/// </summary>
|
||
public TipologiaPosizionamento Posizionamento
|
||
{
|
||
get { return _posizionamento; }
|
||
set { _posizionamento = value; }
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// Imposta o ottiente il numero di asterischi.
|
||
/// Ogni Asterisco che viene aggiunto alla collezione di Nota attraverso il metodo Add, viene incrementato automaticamente di 1
|
||
/// </summary>
|
||
public int NumeroAsterisco
|
||
{
|
||
get { return _numeroasterisco; }
|
||
set { _numeroasterisco = value; }
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// Imposta o ottiene la tipologia della Nota
|
||
/// </summary>
|
||
public TipologiaNota TipoNota
|
||
{
|
||
get { return _tiponota; }
|
||
set { _tiponota = value; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// Id della tabella associata alla nota.
|
||
/// </summary>
|
||
public string IdTabellaAssociata
|
||
{
|
||
get { return _idtabellaassociata; }
|
||
set { _idtabellaassociata = value; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// Stato della Nota.
|
||
/// </summary>
|
||
public StatoNota Stato
|
||
{
|
||
get { return _stato; }
|
||
set { _stato = value; }
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// Costruttore
|
||
/// </summary>
|
||
/// <param name="tiponota"></param>
|
||
/// <param name="idtabellaassociata"></param>
|
||
public Nota(TipologiaNota tiponota, string idtabellaassociata)
|
||
{
|
||
_tiponota = tiponota;
|
||
_idtabellaassociata = idtabellaassociata;
|
||
_stato = StatoNota.DaStampare;
|
||
}
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// Costruttore
|
||
/// </summary>
|
||
/// <param name="tiponota"></param>
|
||
/// <param name="idtabellaassociata"></param>
|
||
/// <param name="testo"></param>
|
||
public Nota(TipologiaNota tiponota, string idtabellaassociata, string testo)
|
||
: this(tiponota, idtabellaassociata)
|
||
{
|
||
_testo = testo;
|
||
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// Ritorna la rappresentazione in stringa del numero di asterisci impostato nella propriet<65> NumeroAsterisco.
|
||
/// </summary>
|
||
public new string ToString()
|
||
{
|
||
string strReturn = string.Empty;
|
||
|
||
for (int i = 0; i < _numeroasterisco; i++)
|
||
strReturn += "*";
|
||
|
||
return strReturn;
|
||
|
||
}
|
||
|
||
}
|
||
|
||
/// <summary>
|
||
/// Collezione dell'oggetto Nota.
|
||
/// </summary>
|
||
public class ListaNote : List<Nota>
|
||
{
|
||
/// <summary>
|
||
/// Aggiunge un oggetto Nota alla collezione Note e incrementa la propriet<65> NumeroAsterisco dell'oggetto Nota.
|
||
/// </summary>
|
||
/// <param name="item"></param>
|
||
public new void Add(Nota item)
|
||
{
|
||
Nota objFound = base.Find(delegate (Nota t) { return t.TipoNota == item.TipoNota; });
|
||
|
||
if (objFound == null)
|
||
{
|
||
item.NumeroAsterisco = recuperaNumeroAsterisco();
|
||
item.Testo = "(" + item.ToString() + ") " + item.Testo;
|
||
|
||
if (item.TipoNota == Nota.TipologiaNota.GradoCopertura)
|
||
item.Posizionamento = Nota.TipologiaPosizionamento.PieDiSezione;
|
||
else
|
||
item.Posizionamento = Nota.TipologiaPosizionamento.PieDiPagina;
|
||
}
|
||
else
|
||
{
|
||
item.NumeroAsterisco = objFound.NumeroAsterisco;
|
||
item.Testo = objFound.Testo;
|
||
item.Posizionamento = objFound.Posizionamento;
|
||
|
||
}
|
||
|
||
base.Add(item);
|
||
}
|
||
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
/// <param name="item"></param>
|
||
public void Insert(Nota item)
|
||
{
|
||
base.Add(item);
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// Recupera il numero di asterischi pi<70> basso disponibile tra quelli gia inseriti nella lista di note.
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private int recuperaNumeroAsterisco()
|
||
{
|
||
int result = 1;
|
||
|
||
foreach (Nota nota in this)
|
||
{
|
||
if (this.Exists(delegate (Nota t) { return t.NumeroAsterisco == result; }))
|
||
result++;
|
||
}
|
||
|
||
return result;
|
||
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// Ricerca all'interno della collezione di Note, l'oggetto avente la TipologiaAsterisco passata in input.
|
||
/// </summary>
|
||
/// <param name="tipoAsterico"></param>
|
||
public Nota Find(Nota.TipologiaNota tipoNota)
|
||
{
|
||
if (base.Count > 0)
|
||
return base.Find(delegate (Nota t) { return t.TipoNota == tipoNota; });
|
||
else
|
||
return new Nota(Nota.TipologiaNota.NonImpostato, null);
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// Ricerca all'interno della collezione di Note,
|
||
/// l'oggetto avente la TipologiaNota passata in input, e l'id del
|
||
/// </summary>
|
||
/// <param name="tipoAsterico">tipo di nota da ricercare</param>
|
||
/// <param name="IdTabellaAssociata">id della tabellaassociata alla nota da ricercare</param>
|
||
/// <returns></returns>
|
||
public Nota Find(Nota.TipologiaNota tipoNota, string IdTabellaAssociata)
|
||
{
|
||
if (base.Count > 0)
|
||
{
|
||
Nota nota = base.Find(delegate (Nota t) { return t.TipoNota == tipoNota && t.IdTabellaAssociata == IdTabellaAssociata; });
|
||
if (nota != null)
|
||
return nota;
|
||
else
|
||
return new Nota(Nota.TipologiaNota.NonImpostato, null);
|
||
}
|
||
else
|
||
return new Nota(Nota.TipologiaNota.NonImpostato, null);
|
||
}
|
||
|
||
|
||
}
|
||
|
||
}
|