iron htmltopdf exportar example create convert c# html-to-pdf html-renderer

c# - exportar - select htmltopdf



HTML a PDF: salto de página con PdfSharp y HtmlRenderer (4)

Intento convertir HTML a PDF utilizando PdfSharp y HtmlRenderer. Esto es parte del código:

private byte[] CreateHtmlContent() { string htmlContent = File.ReadAllText(@"htmlExample.txt"); using (MemoryStream ms = new MemoryStream()) { PdfDocument pdfDocument = new PdfDocument(); PdfDocument pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4, 60); pdf.Save(ms); res = ms.ToArray(); } return res; }

Todo funciona bien, excepto el salto de página. En algunas páginas tengo resultados como en esta imagen.

¿Es posible arreglar esto? El contenido HTML es un html simple que contiene solo encabezados y párrafos y ninguna otra etiqueta. No tuve este problema con iTextSharp pero en este proyecto tengo que usar PdfSharp y MigraDoc.


Esto es un poco tarde, pero me encontré con el mismo problema. El problema es el margen establecido en la llamada GeneratePdf. Quítalo y está bien.

PdfDocument pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4);


Esto también se resuelve agregando una etiqueta DIV adecuada si no está utilizando tablas.

foreach (DataRow row in group) { HTMLoutput += "<div style=/"page-break-inside: avoid/"> "; HTMLoutput += "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; HTMLoutput += "</div>"; }


Puede usar la versión de prerreeso en Nuget (1.5.1-beta1) y luego:

td { page-break-inside: avoid; }


Tuve un desafío similar y lo resolví cuando encontré esta solicitud de extracción en github: https://github.com/ArthurHub/HTML-Renderer/pull/41

Puedes configurar la propiedad css personalizada

td { page-break-inside: avoid; }

en todos los elementos o selectores que desee (td, p, .my-class, etc.) para controlar el salto de página.

Puede usar el valor "auto" si desea que la biblioteca controle su división de página en ciertos elementos

td { page-break-inside: auto; }

También hay un ejemplo para romper la página en el texto en ejecución.