2016-06-06 15 views
13

Ich versuche, HTML zu PDF mit PdfSharp und HtmlRenderer zu konvertieren. Dies ist ein Teil des Codes:HTML zu PDF - Seitenumbruch mit PdfSharp und HtmlRenderer

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; 
} 

Alles funktioniert gut außer Seitenumbruch. Auf einigen Seiten habe ich wie auf diesem Bild führt

HTML page break

Ist es möglich, dieses Problem beheben? HTML-Inhalt ist einfaches HTML, das nur Überschriften und Absätze und keine anderen Tags enthält. Ich hatte kein Problem mit iTextSharp, aber in diesem Projekt muss ich PdfSharp und MigraDoc verwenden.

+0

Ich stehe vor einem ähnlichen Problem. Hast du eine Lösung dafür gefunden? – user1071979

+0

Ich habe vor ähnlichen Problem von 2 Tagen .. Hast du das behoben ??? – Mallikarjun

+0

Ich (eigentlich ein Kollege von der Arbeit) hatte dieses Problem und er fand keine Lösung. Er "löste" das Problem, indem er die HtmlAgilityPack-Bibliothek zum Laden von HTML installierte und dann Element für Element mit MigraDoc erstellte. – kiriz

Antwort

11

Ich hatte eine ähnliche Herausforderung und gelöst, wie ich dieses Pull-Anforderung auf Github gefunden: https://github.com/ArthurHub/HTML-Renderer/pull/41

Sie die benutzerdefinierte-CSS-Eigenschaft können

td { page-break-inside: avoid; } 

Sie auf alle Elemente oder Selektoren wollen (td, p, .my-class, etc.) um den Seitenumbruch zu kontrollieren.

Sie können den Wert „auto“ verwenden, wenn Sie die Bibliothek mögen, dass Ihr Seitenumbruch auf bestimmte Elemente für Seitenumbruch Text in Lauf

td { page-break-inside: auto; } 

Es gibt auch ein Beispiel steuern.

+0

Wie kann ich auf CSS verweisen? Ich bin in der Lage, PDF zu generieren, aber es berücksichtigt keine CSS-Stile. (Meine CSS sind in einer anderen Datei - nicht inline) – TechTurtle

+0

Das funktionierte für mich, oder zumindest scheint es so jetzt. \t

5

Dies ist ein wenig spät, aber ich stieß auf das gleiche Problem. Das Problem ist der Rand, der für den GeneratePdf-Aufruf festgelegt wird. Entferne es und es ist in Ordnung.

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