ITextSharp неправильно преобразовывает упорядоченные списки - PullRequest
0 голосов
/ 19 июня 2019

Я использую ITextSharp для создания PDF-файлов, и проблема в том, что когда я пытаюсь заставить ITextSharp конвертировать мой HTML-текст в PDF, это получается неправильно.

Я хочу знать, можно ли распечатать списки, как они есть, и если да, то как мне это сделать!

Я использую HTMLWorker для анализа строки html в списке, затем я повторяю список и записываю файл в файл.

Это код, который я использую:

    using (StringReader sr = new StringReader(txtConvertido))
{
    string txtreplace = txtConvertido;
    List<IElement> elements = HTMLWorker.ParseToList(sr, styles);
    foreach (IElement e in elements)
    {
        if (e is List)
        {
            List newlist = null;
            if (((List)e).Symbol.Content == "-")
            {
                newlist = new List(List.ORDERED);
                newlist.SetListSymbol("\u2022");
            }
            else if (((List)e).Symbol.Content == "• ")
            {
                newlist = new List(List.UNORDERED);
                newlist.SetListSymbol("•");
            }

            foreach (ListItem item in ((List)e).Items)
            {
                Chunk newchk = new Chunk(item.Chunks[0]);

                float fontsize = item.Chunks[0].Font.Size;
                if (fontsize == 1)
                    fontsize = font_Texto.Size;

                newchk.Font = new Font(font_Texto.BaseFont, fontsize, item.Chunks[0].Font.Style, item.Chunks[0].Font.Color);
                ListItem newitem = new ListItem() { Font = newchk.Font };
                newitem.Add(newchk);
                newlist.Add(newitem);
            }

            _p.Add(newlist);
        }
        else if (e is Paragraph)
        {
            foreach (Chunk chk in e.Chunks)
            {
                float fontsize = chk.Font.Size;
                if (fontsize == 1)
                    fontsize = font_Texto.Size;

                chk.Font = new Font(font_Texto.BaseFont, fontsize, chk.Font.Style, chk.Font.Color);
            }

            if (e is Paragraph)
            {
                if (((Paragraph)e).Alignment == -1)
                    ((Paragraph)e).Alignment = alinhamento;

                ((Paragraph)e).SetLeading(0, multipliedLeading);
            }
            _p.Add(e);
        }
    }
}

Часть HTML-файла, которая не конвертируется правильно, представляет собой тег «ol start =" x "»:

итак, вместо печати:

1. ASDASD
2. gadsafasa
3. dsfa ggga
4. asdfa sdf

...

Он печатается как:

1. ASDASD
1. gadsafasa
1. dsfa ggga
1. asdfa sdf

...

$ Вот HTML:

<ol>
    <li><strong>A «Nome Empresa»</strong></li>
</ol>
<br />
---[Descrever a atividade da empresa, o seu histórico, entre outras informações relevantes.]---<br />
<br />
&nbsp;

<ol start="2">
    <li><strong>&nbsp;O que é o código de ética e de conduta</strong></li>
</ol>
<br />
O Código de Ética e de Conduta
<br />
&nbsp;

<ol start="3">
    <li><strong>Aplicação</strong></li>
</ol>
<br />
O Código de Ética e de Conduta
<br />
&nbsp;

<ol start="4">
    <li><strong>Objetivos</strong></li>
</ol>
<br />
O Código de Ética e Conduta 
<br />
&nbsp;
<ol start="5">
    <li><strong>Acompanhamento</strong></li>
</ol>
<br />
Todos os colaboradores, clientes, parceiros e fornecedores
&nbsp;

...