Я создаю отчет для компании, в которой я работаю, меня попросили сделать это в pdf, вопрос в том, что при создании отчета в pdf связан заголовок, который состоит из логотипа, заголовка и датысодержание с таблицей. То, что показано в отчете, уже перемещается на позиции, но больше ничего не осталось, не могли бы вы помочь мне решить эту проблему? Я оставляю часть кода, который я использую, и изображение отчета..
Это часть моего кода, который я использую.
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;
}
}