Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 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);
 }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
            }
        }
Пример #7
0
        //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);
        }
Пример #8
0
 protected void AddFontsToDocument(Document doc, PdfWriter pdfWriter)
 {
 }
Пример #9
0
 /// <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);
Пример #10
0
        //protected abstract Pdf5PageEventHandler GetHeaderFooterContent(Document doc, PdfWriter pdfWriter);

        protected abstract void RenderDocument(Document doc, PdfWriter pdfWriter);
Пример #11
0
        /// <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);
        }