iTextSharp - вывод сегмента HTML в PDF (в ячейку таблицы) - PullRequest
4 голосов
/ 08 октября 2009

Я использую iTextSharp для создания PDF-файлов для приложения ASP.NET, генерация PDF, кажется, работает нормально, хотя я считаю, что iTextSharp немного не интуитивно понятен в использовании, но это другая история.

Я помещаю данные в таблицу внутри своего PDF, теперь я хочу поместить HTML-содержимое в ячейку таблицы и поддерживать его форматирование / стилизацию. Я видел множество примеров, показывающих, как анализировать HTML в PDF с помощью iTextSharp и поддерживать форматирование, но все эти примеры выплевывают содержимое непосредственно в объект document , например. doc.addElement () Я пытался адаптировать код для разбивки проанализированного HTML-содержимого в ячейку таблицы, например. вместо ...

objects = HTMLWorker.ParseToList(new StringReader(htmlString), styles);
for (int k = 0; k < objects.Count; ++k)
{
    document.Add((IElement) objects[k]);
}

Я использую ...

Cell cell = new Cell();

objects = HTMLWorker.ParseToList(new StringReader(htmlString), styles);
for (int k = 0; k < objects.Count; ++k)
{
    cell.Add((IElement) objects[k]);
}

table.AddCell(cell);
document.Add(table);

Однако все данные в ячейке таблицы корректно форматируются, но все перекрывается и накладывается друг на друга, а не разнесено. Есть что-то, что я делаю не так?

Пример кода приведен с этого сайта http://blog.rubypdf.com/2007/10/10/using-htmlworker-to-parse-html-snippets-and-convert-to-pdf/

Примечание: я не собираюсь поддерживать стили CSS, только то, что <h1> примерно выглядит как то, как обычно <h1> и т. Д.

Ответы [ 2 ]

3 голосов
/ 08 октября 2009

Используйте PdfPTable & PdfPCell классы вместо Table & Cell классов.
(Я пытался с Table / Cell, я получил то же поведение, которое вы описали, но с PdfPtable / PdfPCell все было в порядке.)

0 голосов
/ 05 октября 2016

для тех, кто ищет обновленный ответ, поскольку HTMLWorker теперь абсолютен, см. Ниже:

var tableCell= new PdfPCell();
 string styles= "p { text-align: center; }"; 
 foreach (IElement element in XMLWorkerHelper.ParseToElementList(htmlString, styles))
    {
        tableCell.AddElement(element);
    }
table.AddCell(tableCell);
document.Add(table);
...