C# - пустые строки половинной таблицы после преобразования HTML в PDF с помощью itextsharp
Я могу конвертировать HTML-строку в PDF, но в PDF-файле я вижу несколько пустых половинных строк в конце страницы.
Ссылка на изображение ниже(
https://i.stack.imgur.com/s6RKw.png[^])
Я использую приведенный ниже код для преобразования HTML строки в PDF с помощью itext
//HTML Construction string html = @"HTML STRING COMES HERE"; using (var memoryStream = new MemoryStream()) { Document document = new Document(PageSize.LETTER, 15, 15, 20, 30); document.SetPageSize(iTextSharp.text.PageSize.A4.Rotate()); //var document = new Document(PageSize.A4, 50, 50, 60, 60); var writer = PdfWriter.GetInstance(document, memoryStream); document.Open(); using (var cssMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(Constants.CssText))) { using (var htmlMemoryStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(html))) { XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, htmlMemoryStream, cssMemoryStream); } } document.Close(); pdf = memoryStream.ToArray(); return pdf;
Пожалуйста, помогите мне, как избежать этих пустых половинных строк или предложить mw любой другой открытый исходный код, который может конвертировать HTML в pdf с помощью стилей css
Что я уже пробовал:
Я попробовал приведенный выше код и попытался изменить свойство, но не получил решения
Garth J Lancaster
Было бы неплохо увидеть некоторые детали HTML-строки ... Я вижу 2 возможности
1) вы очищаете HTML - строку перед существующей процедурой-так что код в основном такой, как сейчас, с дополнительным вызовом для очистки (т. е. удаления пустых строк) .. это может включать в себя синтаксический анализ HTML, а затем удаление пустых строк и возврат строки для использования, как вы это делаете сейчас
2) или переписывание/расширение .ParseXHtml() для этого ... хотя и не совсем то же самое, здесь есть некоторые мысли по этому поводу https://stackoverflow.com/questions/36180131/using-itextsharp-xmlworker-to-convert-html-to-pdf-and-write-text-vertically
DerekT-P
мой личный опыт - хотя, возможно, и не с последними версиями - заключается в том, что я не мог заставить iTextSharp правильно отображать нетривиальный HTML, особенно при использовании таблиц стилей (в отличие от встроенных стилей). Я переключился на использование Pechkin, который полагается на библиотеки DLL webkit для рендеринга HTML, и, помимо некоторых сложностей с фоновыми изображениями, обнаружил, что он очень хорошо рендерит PDF-файлы. Единственным недостатком является то, что он 32-битный (возможно, есть 64-битная версия, но я ее еще не нашел!). Печкин тоже свободен.
Member 12406065
Привет, Дерек, я уже звонил Печкину. Я могу преобразовать его, но он не выровнен должным образом. если у меня есть 5 таблиц в HTML. Его расщепление не отображается должным образом. заголовок таблицы находится на одной странице, а другое содержимое-на следующей странице
DerekT-P
Попробуйте управлять разрывами страниц в CSS:
@страница {
размер: А4;
маржа: 0;
}
@media print {
html, тело {
ширина: 210 мм;
высота: 297 мм;
}
tbody::после {
содержание: ' ';
дисплей: блок;
разрыв страницы-после: всегда;
разрыв страницы внутри: избегайте;
разрыв страницы-до: избежать;
}
}