Saltar al contenido

Visualización de encabezados y pies de página en un PDF generado por Rotativa

Agradeceríamos tu apoyo para difundir nuestros enunciados acerca de las ciencias informáticas.

Solución:

Encontré una documentación de wkhtmltopdf (o una mejor versión archivada) y allí se describe cómo administrar encabezados y pies de página.

Básicamente solo puedes agregar --header-center "text" (o interruptores similares) a la lista de argumentos y eso es todo.

Entonces usándolo con Rotativa sería:

public ActionResult ShowPdf()

     var model = new Model();
     return new ViewAsPdf("view.cshtml", model)
                
                    FileName = "Report.pdf",
                    CustomSwitches = "--print-media-type --header-center "text""
                ;

(no se si --print-media-type es necesario.)

Si desea mostrar una Vista en lugar de texto en el encabezado/pie de página, puede hacerlo de esta manera:

public ActionResult ViewPDF()

      string customSwitches = string.Format("--print-media-type --allow 0 --footer-html 0 --footer-spacing -10",
                Url.Action("Footer", "Document", new  area = "", "https"));


     return new ViewAsPdf("MyPDF.cshtml", model)
                
                    FileName = "MyPDF.pdf",
                    CustomSwitches = customSwitches
                ;


[AllowAnonymous]
public ActionResult Footer()

    return View();

No olvides agregar el [AllowAnonymous] attribute en la acción de pie de página, de lo contrario, Rotatina no puede acceder a la ruta.

Así es como lo hice (en su totalidad):

public ActionResult PrintPDF(int? selectedSiteRotaId, int selectedSiteId)

    string footer = "--footer-center "Printed on: " + DateTime.Now.Date.ToString("MM/dd/yyyy") + "  Page: [page]/[toPage]"" + " --footer-line --footer-font-size "9" --footer-spacing 6 --footer-font-name "calibri light"";

    return new ActionAsPdf("RenderPDF", new  selectedSiteRotaId = selectedSiteRotaId, selectedSiteId = 7 ) 
    
        FileName = "PDF_Output.pdf",
        PageOrientation = Orientation.Landscape,
        MinimumFontSize = 10, 
        //PageMargins  = new Margins(5,5,5,5),
        PageSize = Size.A3,
        CustomSwitches = footer
    ;

    //var pdfResult = new ActionAsPdf("RenderPDF", new  selectedSiteRotaId = selectedSiteRotaId, selectedSiteId = 7 )
    //
    //    FileName = "PDF_Output.pdf",
    //    PageOrientation = Orientation.Landscape,
    //    MinimumFontSize = 10
    //;

    //var binary = pdfResult.BuildPdf(this.ControllerContext);

    //return File(binary, "application/pdf");



public ActionResult RenderPDF(int? selectedSiteRotaId, int selectedSiteId)

    return RedirectToAction("Index", "PrintPDF", new  selectedSiteRotaId = selectedSiteRotaId, selectedSiteId = 7 );

Recuerda que puedes parafrasear .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *