在iTextSharp

时间:2015-06-29 02:11:01

标签: html itextsharp footer

我想在页眉和页脚的页面中呈现HTML字符串。我尝试通过PdfPageEventHelper添加页眉/页脚,然后加载HTML。它确实有效。但是,HTML在页面中加载没有边距。我尝试在HTML中为body元素添加margin,但这并不起作用。然后我尝试向body添加一个表,然后使用HTMLWorker.ParseToListcell.AddElement在表中加载HTML。它导致了一个没有HTML元素的空表。

pdfDoc.Open();

iTextSharp.text.html.simpleparser.HTMLWorker hw = new iTextSharp.text.html.simpleparser.HTMLWorker(pdfDoc);
    StyleSheet styles = new StyleSheet();
    // hw.Parse(new StringReader(invoiceHTML));

    PdfPTable bodyTable = new PdfPTable(1);
    PdfPCell bodyCell = new PdfPCell();
    bodyTable.AddCell(bodyCell);
    pdfDoc.Add(bodyTable);
    var htmlarraylist = iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(new StringReader(invoiceHTML), styles);
    for (int k = 0; k < htmlarraylist.Count; k++)
    {
    var   ele = (IElement)htmlarraylist[k];

        bodyCell.AddElement(ele);
    }
pdfDoc.Close();

1 个答案:

答案 0 :(得分:1)

您正在创建表,创建单元格,将单元格添加到表格中,然后将该表格添加到文档中。此时这些对象已完成,您应将它们视为只读变量(充其量)。但是,在这些步骤之后,当您开始向单元格添加实际内容时,这就是您没有看到任何内容的原因。您需要在循环之后将单元格添加到表格,并将表格移动到文档

var bodyTable = new PdfPTable(1);
var bodyCell = new PdfPCell();

var htmlarraylist = iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(new StringReader(invoiceHTML), styles);
for (int k = 0; k < htmlarraylist.Count; k++) {
    var ele = (IElement)htmlarraylist[k];
    bodyCell.AddElement(ele);
}

bodyTable.AddCell(bodyCell);
pdfDoc.Add(bodyTable);