我想在页眉和页脚的页面中呈现HTML字符串。我尝试通过PdfPageEventHelper添加页眉/页脚,然后加载HTML。它确实有效。但是,HTML在页面中加载没有边距。我尝试在HTML中为body元素添加margin,但这并不起作用。然后我尝试向body添加一个表,然后使用HTMLWorker.ParseToList
和cell.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();
答案 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);