Как прокрутить содержимое таблицы вниз в отчете -Itextsharp - PullRequest
0 голосов
/ 25 апреля 2019

Я создаю отчет для компании, в которой я работаю, меня попросили сделать это в pdf, вопрос в том, что при создании отчета в pdf связан заголовок, который состоит из логотипа, заголовка и датысодержание с таблицей. То, что показано в отчете, уже перемещается на позиции, но больше ничего не осталось, не могли бы вы помочь мне решить эту проблему? Я оставляю часть кода, который я использую, и изображение отчета..

Report

Это часть моего кода, который я использую.

public ActionResult Download_Rep_Pdf_Administrativo()
{
    //Guardo en memoria
    MemoryStream ms = new MemoryStream();

    //Indicamos donde vamos a guardar el documento
    string directorioRaiz = "~/App_Data/";
    string NombreArchivoPDF = "C_Administrativa " + DateTime.Today.ToString("dd-MM-yyyy") + ".pdf";
    //Indicamos donde esta guardada la imagen
    //string directorioRaiz_Img = "~/Imagenes/";
    //string NombreArchivoImg = "ESCUDO_2019_VERSION_1_Vertical_opt_500X500px.png";


    Document doc = new Document(PageSize.LETTER.Rotate(), 30f, 30f, 60f, 50f);
    PdfWriter writer = PdfWriter.GetInstance(doc, ms);
    writer.PageEvent = new HeaderFooter();
    doc.Open();
    Font _standardFont = new Font(Font.FontFamily.TIMES_ROMAN, 8, Font.NORMAL, BaseColor.BLACK);
    Font _standardFontHeader = new Font(Font.FontFamily.TIMES_ROMAN, 8, Font.BOLD, BaseColor.BLACK);
    Font _standardFontTotales = new Font(Font.FontFamily.TIMES_ROMAN, 8, Font.BOLD, BaseColor.BLACK);
    doc.SetPageSize(PageSize.A4.Rotate());//Horizontal
    PdfPTable tablaDetalle = new PdfPTable(8);/*aqui va el numero de registros/Columnas*/
    tablaDetalle.WidthPercentage = 100f;

    doc.AddTitle("Clasificacion Administrativa "+DateTime.Today.ToString("dd-MM-yyyy"));
    doc.AddCreator("© " + DateTime.Now.Year + " - Empresa");


    try
    {

        #region Encabzado de tabla
        //Configuramos el título de las columnas de la tabla
        PdfPCell clNum = new PdfPCell(new Phrase("#", _standardFontHeader));
        //clNum.BorderWidth = 0;
        //clNum.BorderWidthBottom = 0.75f;

        PdfPCell clCONCEPTO = new PdfPCell(new Phrase("CONCEPTO", _standardFontHeader));
        //clCONCEPTO.BorderWidth = 0;
        //clCONCEPTO.BorderWidthBottom = 0.75f;

        PdfPCell clAPROBADO = new PdfPCell(new Phrase("APROBADO(1)", _standardFontHeader));
        //clAPROBADO.BorderWidth = 0;
        //clAPROBADO.BorderWidthBottom = 0.75f;

        PdfPCell clAMPLIACIONESRED = new PdfPCell(new Phrase("AMPLIACIONES REDUCCIONES(2)", _standardFontHeader));
        //clAMPLIACIONESRED.BorderWidth = 0;
        //clAMPLIACIONESRED.BorderWidthBottom = 0.75f;

        PdfPCell clMODIFICADO = new PdfPCell(new Phrase("MODIFICADO(3=1+2)", _standardFontHeader));
        //clMODIFICADO.BorderWidth = 0;
        //clMODIFICADO.BorderWidthBottom = 0.75f;

        PdfPCell clDEVENGADO = new PdfPCell(new Phrase("DEVENGADO(4)", _standardFontHeader));
        //clDEVENGADO.BorderWidth = 0;
        //clDEVENGADO.BorderWidthBottom = 0.75f;

        PdfPCell clPAGADO = new PdfPCell(new Phrase("PAGADO(5)", _standardFontHeader));
        //clPAGADO.BorderWidth = 0;
        //clPAGADO.BorderWidthBottom = 0.75f;

        PdfPCell clSUBEJERCIDO = new PdfPCell(new Phrase("SUB EJERCIDO(6=3-4)", _standardFontHeader));
        //clSUBEJERCIDO.BorderWidth = 0;
        //clSUBEJERCIDO.BorderWidthBottom = 0.75f;

        //Añadimos las celdas a la tabla
        tablaDetalle.AddCell(clNum);
        tablaDetalle.AddCell(clCONCEPTO);
        tablaDetalle.AddCell(clAPROBADO);
        tablaDetalle.AddCell(clAMPLIACIONESRED);
        tablaDetalle.AddCell(clMODIFICADO);
        tablaDetalle.AddCell(clDEVENGADO);
        tablaDetalle.AddCell(clPAGADO);
        tablaDetalle.AddCell(clSUBEJERCIDO);
        #endregion

        #region Llenado de la tabla
        var la = TempData["ListaClasificacion"] as List<Administrativo>;

        int contador = 0;
        foreach (Administrativo a in la)
        {
            if (a.Concepto != "TOTAL DEL GASTO")
            {
                clNum = new PdfPCell(new Phrase(a.Cuenta, _standardFont));
                //clNum.BorderWidth = 0;

                clCONCEPTO = new PdfPCell(new Phrase(a.Concepto, _standardFont));
                //clCONCEPTO.BorderWidth = 0;

                clAPROBADO = new PdfPCell(new Phrase(a.Aprobado, _standardFont));
                //clAPROBADO.BorderWidth = 0;

                clAMPLIACIONESRED = new PdfPCell(new Phrase(a.AmpliaReduc, _standardFont));
                //clAMPLIACIONESRED.BorderWidth = 0;

                clMODIFICADO = new PdfPCell(new Phrase(a.Modificado, _standardFont));
                //clMODIFICADO.BorderWidth = 0;

                clDEVENGADO = new PdfPCell(new Phrase(a.Devengado, _standardFont));
                //clDEVENGADO.BorderWidth = 0;

                clPAGADO = new PdfPCell(new Phrase(a.Pagado, _standardFont));
                //clPAGADO.BorderWidth = 0;

                clSUBEJERCIDO = new PdfPCell(new Phrase(a.SubEjercicio, _standardFont));
                //clSUBEJERCIDO.BorderWidth = 0;

                // Añadimos las celdas a la tabla
                // Añadimos las celdas a la tabla
                tablaDetalle.AddCell(clNum);
                tablaDetalle.AddCell(clCONCEPTO);
                tablaDetalle.AddCell(clAPROBADO);
                tablaDetalle.AddCell(clAMPLIACIONESRED);
                tablaDetalle.AddCell(clMODIFICADO);
                tablaDetalle.AddCell(clDEVENGADO);
                tablaDetalle.AddCell(clPAGADO);
                tablaDetalle.AddCell(clSUBEJERCIDO);
                if (contador == 10)
                {
                    //doc.NewPage();
                    contador = 0;
                }
                contador++;
            }
            else
            {
                clNum = new PdfPCell(new Phrase(a.Cuenta, _standardFontTotales));
                //clNum.BorderWidth = 0;

                clCONCEPTO = new PdfPCell(new Phrase(a.Concepto, _standardFontTotales));
                //clCONCEPTO.BorderWidth = 0;

                clAPROBADO = new PdfPCell(new Phrase(a.Aprobado, _standardFontTotales));
                //clAPROBADO.BorderWidth = 0;

                clAMPLIACIONESRED = new PdfPCell(new Phrase(a.AmpliaReduc, _standardFontTotales));
                //clAMPLIACIONESRED.BorderWidth = 0;

                clMODIFICADO = new PdfPCell(new Phrase(a.Modificado, _standardFontTotales));
                //clMODIFICADO.BorderWidth = 0;

                clDEVENGADO = new PdfPCell(new Phrase(a.Devengado, _standardFontTotales));
                //clDEVENGADO.BorderWidth = 0;

                clPAGADO = new PdfPCell(new Phrase(a.Pagado, _standardFontTotales));
                //clPAGADO.BorderWidth = 0;

                clSUBEJERCIDO = new PdfPCell(new Phrase(a.SubEjercicio, _standardFontTotales));
                //clSUBEJERCIDO.BorderWidth = 0;

                // Añadimos las celdas a la tabla
                // Añadimos las celdas a la tabla
                tablaDetalle.AddCell(clNum);
                tablaDetalle.AddCell(clCONCEPTO);
                tablaDetalle.AddCell(clAPROBADO);
                tablaDetalle.AddCell(clAMPLIACIONESRED);
                tablaDetalle.AddCell(clMODIFICADO);
                tablaDetalle.AddCell(clDEVENGADO);
                tablaDetalle.AddCell(clPAGADO);
                tablaDetalle.AddCell(clSUBEJERCIDO);
            }
        }
        #endregion

        //Cerramos el documento
        //doc.Add(tablaHeader);
        doc.Add(tablaDetalle);

        doc.Close();
        byte[] bytestream = ms.ToArray();

        ms = new MemoryStream();
        ms.Write(bytestream, 0, bytestream.Length);
        ms.Position = 0;
    }
    catch (Exception ex)
    {
        Models.Clasificador c = new Models.Clasificador();
        ViewData["DespliegaLista"] = 0;
        ViewData["TipoReporte"] = "0";
        ViewBag.ddl = c.listatipoReporte();
        ViewBag.ddlMes = c.listaMes();
        ViewBag.ddlAnio = c.listaAnio();
        ModelState.AddModelError("Ocurrio Un Error Inesperado", ex.ToString());
    }
    return new FileStreamResult(ms, "application/pdf");
}

Это второй метод

public override void OnEndPage(PdfWriter writer, Document document)
    {
        Font _standardFont = new Font(Font.FontFamily.TIMES_ROMAN, 8, Font.BOLD, BaseColor.BLACK);
        Font _standardFontFooter = new Font(Font.FontFamily.TIMES_ROMAN, 7, Font.BOLD, BaseColor.BLACK);
        PdfPCell _cell;

        try
        {
            ////Indicamos donde esta guardada la imagen
            //string directorioRaiz_Img = "~/Imagenes/";
            //string NombreArchivoImg = "ESCUDO_2019_VERSION_1_Vertical_opt_500X500px.png";
            #region test
            Image img_LogoMty = Image.GetInstance(System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["LOGO_MTY_DOC"].ToString()));
            img_LogoMty.BorderWidth = 0;
            img_LogoMty.Alignment = Image.TEXTWRAP | Element.ALIGN_LEFT;
            float percentage = 0.0f;
            percentage = 49 / img_LogoMty.Width;
            //img_LogoMty.SpacingBefore = 15f;
            //img_LogoMty.IndentationLeft = 9f;
            img_LogoMty.ScalePercent(percentage * 100);

            #endregion
            #region HEADER
            PdfPTable tbHeader = new PdfPTable(3);
            tbHeader.TotalWidth = document.PageSize.Width - document.LeftMargin - document.RightMargin;
            //tbHeader.DefaultCell.Border = 0;

            _cell = new PdfPCell(img_LogoMty/*new Paragraph("INSERTE LOGO", _standardFont)*/);
            _cell.HorizontalAlignment = Element.ALIGN_LEFT;
            _cell.Border = 0;
            tbHeader.AddCell(_cell);

             _cell = new PdfPCell(new Paragraph("############ \n ESTADO ANALITICO DEL EJERCICIO DEL PRESUPUESTO DE EGRESOS \n CLASIFICACION ADMINISTRATIVA \n DEL " +_fi+ " AL "+ _ff + ".", _standardFont));
            _cell.HorizontalAlignment = Element.ALIGN_CENTER;
            _cell.Border = 0;
            tbHeader.AddCell(_cell);

            _cell = new PdfPCell(new Paragraph(DateTime.Now.ToString("dd/MM/yyyy"), _standardFont));
            _cell.HorizontalAlignment = Element.ALIGN_RIGHT;
            _cell.Border = 0;
            tbHeader.AddCell(_cell);

            tbHeader.WriteSelectedRows(0, -1, document.LeftMargin, writer.PageSize.GetTop(document.TopMargin) + 30, writer.DirectContent);
            #endregion

            #region FOOTER
            PdfPTable tbFooter = new PdfPTable(3);
            tbFooter.TotalWidth = document.PageSize.Width - document.LeftMargin - document.RightMargin;
            //tbFooter.DefaultCell.Border = 0;

            tbFooter.AddCell(new Paragraph());

            _cell = new PdfPCell(new Paragraph("© " + DateTime.Now.Year + " - Municipio de Monterrey", _standardFontFooter));
            _cell.HorizontalAlignment = Element.ALIGN_CENTER;
            _cell.Border = 0;
            tbFooter.AddCell(_cell);

            _cell = new PdfPCell(new Paragraph("Pag. " + writer.PageNumber, _standardFontFooter));
            _cell.HorizontalAlignment = Element.ALIGN_RIGHT;
            _cell.Border = 0;
            tbFooter.AddCell(_cell);

            tbFooter.AddCell(new Paragraph());
            tbFooter.AddCell(_cell);

            tbFooter.WriteSelectedRows(0, -1, document.LeftMargin, writer.PageSize.GetBottom(document.BottomMargin) - 5, writer.DirectContent);
            #endregion
        }
        catch (Exception ex)
        {

            throw;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...