Member 12406065 Ответов: 0

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::после {
содержание: ' ';
дисплей: блок;
разрыв страницы-после: всегда;
разрыв страницы внутри: избегайте;
разрыв страницы-до: избежать;
}
}

0 Ответов