public Document GetErrorDocument( Boolean openCloseConnection, Boolean addContentDisposition, String fileName, System.Web.HttpResponse webResponse, System.Web.HttpCookie cookie, DocTemplateVers.Domain.DTO.ServiceExport.DTO_Settings settings, IList <DocTemplateVers.Domain.DTO.ServiceExport.DTO_Signature> Signatures) { if (openCloseConnection) { webResponse.Clear(); } if (cookie != null) { webResponse.AppendCookie(cookie); } if (addContentDisposition || openCloseConnection) { webResponse.AddHeader("Content-Disposition", "attachment; filename=" + HtmlCheckFileName(fileName) + "." + ExportFileType.pdf.ToString()); webResponse.ContentType = "application/pdf"; } Document doc = ExportTo(settings, webResponse.OutputStream, true, Signatures, ""); if (doc != null && openCloseConnection) { webResponse.End(); } return(doc); }
public Boolean ExportToPdf(DTO_Template template, Boolean forWebDownload, String webFileName, Boolean saveToFile, String storeFileName, Boolean openCloseConnection, System.Web.HttpResponse webResponse, System.Web.HttpCookie cookie) { //DTO_Settings Sett1 = (DTO_Settings)template.Settings.Clone(); //DTO_Settings Sett2 = (DTO_Settings)template.Settings.Clone(); Boolean response = false; iTextSharp5.text.Document doc = null; _template = template; if (forWebDownload) { //doc = WebExport(openCloseConnection, webFileName, template.Settings, webResponse, cookie, template.Signatures); doc = WebExport(openCloseConnection, webFileName, template.Settings, webResponse, cookie, template.Signatures, ""); if (doc == null) { GetErrorDocument(openCloseConnection, false, webFileName, webResponse, cookie, template.Settings, template.Signatures); return(false); } else if (saveToFile && !String.IsNullOrEmpty(storeFileName)) { //SavePDFtoFile(storeFileName, template.Settings, template.Signatures); SavePDFtoFile(storeFileName, template.Settings, template.Signatures); } } else if (saveToFile && !String.IsNullOrEmpty(storeFileName)) { doc = SavePDFtoFile(storeFileName, template.Settings, template.Signatures); } if (!response) { response = (doc != null); } return(response); }
public Boolean ExportToFile(DTO_Template template, String storeFileName) { iTextSharp5.text.Document doc = null; _template = template; if (!String.IsNullOrEmpty(storeFileName)) { doc = SavePDFtoFile(storeFileName, template.Settings, template.Signatures); } return(doc != null); }
protected override void RenderErrorDocument(iTS.Document doc) { PdfPTable contentTable = new PdfPTable(1); contentTable.TotalWidth = _template.Settings.Width - (_template.Settings.MarginLeft + _template.Settings.MarginRight); contentTable.AddCell(RenderBody()); doc.Add(contentTable); }
private static Document InitializeDocument(ref DocTemplateVers.Domain.DTO.ServiceExport.DTO_Settings settings) { // ATTENZIONE! // Nell'esportazione in PDF PRIMA di arrivare qui i margini dei settings vengono // REIMPOSTATI! Quindi i SETTINGS DEVONO essere già stati impostati! // E' possibile comunque recuperare i DefaultSettings direttamente qui, // MA questo comporta che nell'output PDF l'header andrà a sovrapporsi al contenuto. // Almeno in fase di TEST, quindi, ho lasciato l'eccezione! if (settings == null) { settings = Export.ExportBaseHelper.GetDefaultPageSettings(); } //settings.Size != DocTemplateVers.PageSize.none || if (settings.Size != DocTemplateVers.PageSize.custom) { lm.Comol.Core.DomainModel.DocTemplateVers.Helpers.PageSizeValue PgSzV = lm.Comol.Core.DomainModel.DocTemplateVers.Helpers.Measure.GetSize(settings.Size, "px"); settings.Width = PgSzV.Width; settings.Height = PgSzV.Height; } if (settings.Width < lm.Comol.Core.DomainModel.DocTemplateVers.Helpers.Measure.cm_To_Px(5)) { settings.Width = lm.Comol.Core.DomainModel.DocTemplateVers.Helpers.Measure.cm_To_Px(5); } if (settings.Height < lm.Comol.Core.DomainModel.DocTemplateVers.Helpers.Measure.cm_To_Px(5)) { settings.Height = lm.Comol.Core.DomainModel.DocTemplateVers.Helpers.Measure.cm_To_Px(5); } if ((settings.MarginLeft + settings.MarginRight) > settings.Width) { settings.MarginLeft = 0; settings.MarginRight = 0; } if ((settings.MarginTop + settings.MarginBottom) > settings.Height) { settings.MarginTop = 0; settings.MarginBottom = 0; } Rectangle Page = new Rectangle(settings.Width, settings.Height); if (settings.BackgroundAlpha > 0) { Page.BackgroundColor = new BaseColor(settings.BackgroundRed, settings.BackgroundGreen, settings.BackgroundBlue); } Document doc = new Document(Page, settings.MarginLeft, settings.MarginRight, settings.MarginTop, settings.MarginBottom); return(doc); }
protected override void RenderDocument(iTextSharp5.text.Document doc, iTextSharp5.text.pdf.PdfWriter pdfWriter) { dtoExportSubmission settings = Settings; if (settings.ForCompile) { ExportSubmission(doc, settings.Call, settings.Submitter, settings.RequiredFiles, settings.Sections, settings.PrintBy, Translations); } else { ExportSubmission(doc, settings.Submission, settings.RequiredFiles, settings.Sections, settings.PrintBy, Translations); } }
//Se Setting == null, viene preso quello di default! private iTextSharp5.text.Document SavePDFtoFile(String storeFileName, lm.Comol.Core.DomainModel.DocTemplateVers.Domain.DTO.ServiceExport.DTO_Settings settings, IList <lm.Comol.Core.DomainModel.DocTemplateVers.Domain.DTO.ServiceExport.DTO_Signature> signatures) { iTS.Document doc = null; System.IO.FileStream stream = null; Impersonate oImpersonate = new Impersonate(); Boolean wasImpersonated = Impersonate.isImpersonated(); try { if (!wasImpersonated && oImpersonate.ImpersonateValidUser() == FileMessage.ImpersonationFailed) { return(null); } else { stream = new System.IO.FileStream(storeFileName, System.IO.FileMode.Create); if (stream != null) { doc = FileExport(settings, stream, signatures); } } } catch (Exception ex) { if (stream != null) { stream.Close(); } if (lm.Comol.Core.File.Exists.File(storeFileName)) { lm.Comol.Core.File.Delete.File(storeFileName); } if (!wasImpersonated) { oImpersonate.UndoImpersonation(); } doc = null; } finally { if (!wasImpersonated) { oImpersonate.UndoImpersonation(); } } return(doc); }
protected void AddFontsToDocument(Document doc, PdfWriter pdfWriter) { }
/// <summary> /// ??? /// </summary> /// <param name="doc">Il documento</param> /// <remarks>IL DOCUMENTO non è APERTO SE non si vuole l'header nella prima pagina...</remarks> protected abstract void RenderErrorDocument(Document doc);
//protected abstract Pdf5PageEventHandler GetHeaderFooterContent(Document doc, PdfWriter pdfWriter); protected abstract void RenderDocument(Document doc, PdfWriter pdfWriter);
/// <summary> /// Effettiva creazione di TUTTO il documento. TUTTE le fuzioni passano da qui. /// </summary> /// <param name="ValSettings">I SETTINGS. INTERNAMENTE vengono CLONATI, in modo da evitare il ricalcolo dei margini passando lo stesso oggetto.</param> /// <param name="stream"></param> /// <param name="forErrorContent"></param> /// <param name="Signatures"></param> /// <returns></returns> private Document ExportTo(DocTemplateVers.Domain.DTO.ServiceExport.DTO_Settings ValSettings, System.IO.Stream stream, Boolean forErrorContent, IList <DocTemplateVers.Domain.DTO.ServiceExport.DTO_Signature> Signatures, string waterMark) { DocTemplateVers.Domain.DTO.ServiceExport.DTO_Settings settings = null; if (ValSettings != null) { try { settings = (DocTemplateVers.Domain.DTO.ServiceExport.DTO_Settings)ValSettings.Clone(); } catch (Exception ex) { } } Document doc = null; try { //MODIFICA DI MARGIN TOP E MARGIN BOTTOM!!! //Necessario creare tale oggetto PRIMA di inizializzare la pagina per avere i margini corretti. //NOTA - POSSIBILE BUG!!! // Nel caso la prima pagina non presenti Header e Footer // è da rivedere COME impostare i margini SENZA HEADER/FOOTER // ed impostarli correttamente per le pagine successive. // Al momento può anche andare così, ma ci sarà una maggiore spaziatura nella prima pagina. //NOTA - IMPLEMENTAZIONI FUTURE // NON è previsto il numero di pagina ed ancor meno il numero pagine totali, // per le quali sono necessari ulteriori approfondimenti. // Lo inizializzo qui ed ora, // perchè internamente vengono controllati i settings, // e settate le dimensioni a seconda del formato. doc = InitializeDocument(ref settings); float marginTop = settings.MarginTop; float marginBottom = settings.MarginTop; Pdf5PageEventHandler ev = new Pdf5PageEventHandler( GetHeader(), GetFooter(), ref settings, Signatures, waterMark); //REIMPOSTO I BORDI!!! // NON posso farlo prima, per altre logiche, tipo dimensione pagina. if (settings.MarginTop > doc.PageSize.Height / 3) { settings.MarginTop = doc.PageSize.Height / 3; } if (settings.MarginBottom > doc.PageSize.Height / 3) { settings.MarginBottom = doc.PageSize.Height / 3; } if (settings.MarginLeft > doc.PageSize.Width / 3) { settings.MarginLeft = doc.PageSize.Width / 3; } if (settings.MarginRight > doc.PageSize.Width / 3) { settings.MarginRight = doc.PageSize.Width / 3; } doc.SetMargins(settings.MarginLeft, settings.MarginRight, settings.MarginTop, settings.MarginBottom); PdfWriter pdfWriter = PdfWriter.GetInstance(doc, stream); pdfWriter.PageEvent = ev; doc.Open(); //Non serve più, //if (settings.HasHeaderOnFirstPage) // doc.Open(); ////Compilazione documento if (forErrorContent) { RenderErrorDocument(doc); } else { RenderDocument(doc, pdfWriter); } //Serve per poter mettere il footer sull'ultima pagina. //L'evento OnEndDocument non aggiunge nulla al documento... ev.LastPageEnd(pdfWriter, doc); doc.Close(); } catch (Exception ex) { doc = null; if (stream != null) { stream.Close(); } } finally { if (doc != null && doc.IsOpen()) { doc.Close(); } } return(doc); }