2016-06-06 6 views
13

Я пытаюсь преобразовать HTML в PDF с помощью PdfSharp и HtmlRenderer. Код по каталогу:HTML to PDF - перерыв страницы с PdfSharp и 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; 
} 

Все работает отлично, кроме разрыва страницы. На некоторых страницах я привести, как на этом изображении

HTML page break

Можно ли это исправить? HTML-контент - это простой html, который содержит только заголовки и абзацы, а также другие теги. У меня не было этой проблемы с iTextSharp, но в этом проекте я должен использовать PdfSharp и MigraDoc.

+0

Я столкнулся с аналогичной проблемой. Вы поняли это? – user1071979

+0

Я столкнулся с аналогичной проблемой с 2-х дней .. Вы исправили это ??? – Mallikarjun

+0

У меня (на самом деле команда из работы) была проблема, и он не нашел решения. Он «решил» проблему, установив библиотеку HtmlAgilityPack для загрузки HTML и создав элемент за элементом с помощью MigraDoc. – kiriz

ответ

11

У меня был подобный вызов и решить ее как я нашел этот запрос тянуть на GitHub: https://github.com/ArthurHub/HTML-Renderer/pull/41

Вы можете установить пользовательские-Css-свойство

td { page-break-inside: avoid; } 

на всех элементах или селекторов, которые вы хотите (td, p, .my-class и т. д.) для управления разбиением страницы.

Вы можете использовать значение «авто», если вы хотите, чтобы библиотека для управления вашей страницы ломки на определенных элементах

td { page-break-inside: auto; } 

Существует также пример страницы преломления в бегущей строку.

+0

Как включить ссылку на CSS? Я могу генерировать PDF, но он не учитывает стили css. (Мои css находятся в другом файле, а не в строке) – TechTurtle

+0

Это сработало для меня, или, по крайней мере, сейчас так кажется. \t

5

Это немного поздно, но я столкнулся с той же проблемой. Проблема заключается в марже, заданном для вызова GeneratePdf. Удалите его, и все в порядке.

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