2016-06-06 13 views
13

Próbuję przekonwertować HTML na PDF za pomocą PdfSharp i HtmlRenderer. To jest część kodu:HTML do PDF - podział strony z PdfSharp i 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; 
} 

Wszystko działa poprawnie, z wyjątkiem strony. Na niektórych stronach mam prowadzić jak na tym zdjęciu

HTML page break

Czy to możliwe, aby rozwiązać ten problem? Treść HTML to prosty html zawierający tylko nagłówki i akapity oraz brak innych tagów. Nie miałem tego problemu z iTextSharp, ale w tym projekcie muszę używać PdfSharp i MigraDoc.

+0

Mam do czynienia z podobnym problemem. Czy masz na to poprawkę? – user1071979

+0

Mam podobny problem z 2 dni. Naprawiłeś to? – Mallikarjun

+0

Ja (właściwie to kolega z pracy) miałem ten problem, a on nie znalazł rozwiązania. "Rozwiązał" problem, instalując bibliotekę HtmlAgilityPack do ładowania HTML, a następnie tworzony element po elemencie za pomocą MigraDoc. – kiriz

Odpowiedz

11

miałem podobnego problemu i rozwiązać go jak znalazłem ten wniosek ciągnij github: https://github.com/ArthurHub/HTML-Renderer/pull/41

Można ustawić niestandardową-css-PROPERTY

td { page-break-inside: avoid; } 

wszystkich elementów lub selektorów chcesz (td, p, .my-class, itp.) w celu kontrolowania łamania strony.

Można użyć wartości „auto” jeśli chcesz biblioteka kontrolować stronę na łamanie pewnych elementów

td { page-break-inside: auto; } 

Jest też przykładem łamania stron w prowadzeniu tekst.

+0

Jak zawrzeć odniesienie do CSS? Potrafię generować PDF, ale nie uwzględnia żadnych stylów CSS. (Moje css są w innym pliku - nie w linii) – TechTurtle

+0

To działało dla mnie, a przynajmniej wydaje się, że teraz. \t

5

To trochę za późno, ale wpadłem na ten sam problem. Problemem jest margines ustawiony w wywołaniu GeneratePdf. Usuń go i wszystko jest w porządku.

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