我到處搜索這個問題,我仍然無法獲得工作解決方案wrrr,這是非常煩人的。iTextSharp XMLWorker Footer from html
我使用xmlworker(itextsharp 2.1)從html創建pdf。這對我來說是完美的,但我需要添加頁腳和頁眉到由傳遞的HTML片段填充的每個頁面。在例子中,我這個字符串傳遞給函數的頁腳HTML
<table>
<tr>
<td>كند/źćąśęłżźń</td>
<td>something</td>
<td><img src="i_03_x2.png"/></td>
</tr>
</table>
,我需要解析它使用XMLWorker.GetInstance(列出),並將其添加爲頁腳:
public override void OnEndPage(PdfWriter writer, Document document)
{
PdfPTable footerTable = new PdfPTable(1);
footerTable.TotalWidth = width;
PdfPCell singleCell = new PdfPCell();
singleCell.BorderWidth = 2f;
DirectHandler handler = new DirectHandler();
using (TextReader sr = new StringReader(HTMLtoPDF.footer.HTML))
{
XMLWorkerHelper.GetInstance().ParseXHtml(handler, sr);
}
foreach (var element in handler.elements)
{
singleCell.AddElement(element);
}
footerTable.AddCell(singleCell);
footerTable.WriteSelectedRows(0, -1, left, bottom, writer.DirectContent);
}
public class DirectHandler : IElementHandler
{
public List<IElement> elements = new List<IElement>();
public void Add(IWritable w)
{
if (w is WritableElement)
{
elements.AddRange(((WritableElement)w).Elements());
}
}
}
而且現在第二和從HTML顯示,但第一個丟失三列,所以我的問題是:
是否有可能我的字體(宋體的Unicode)連接到
XMLWorkerHelper.GetInstance().ParseXHtml
使用我的處理程序和字體? ParseXHtml函數有多個重載,但我需要使用DirectHandler作爲IElement處理程序和MY FONT(arialuni.ttf)作爲字體提供程序。 任何幫助,將不勝感激
你能更改HTML位有字體信息?如果是這樣,[試試這個](http://stackoverflow.com/a/12230552/231316)。如果您無法更改HTML,請參閱此文件(http://stackoverflow.com/a/11564028/231316),以便在'for'循環中設置字體。 –
在循環中設置字體僅適用於段落,其他元素(假設我們使用XMLWorker而不是HTMLWorker)不適用。我有一個帶有字體的外部樣式表,但是在這裏我遇到了同樣的問題 - 我無法將它添加到ParseXHtml函數中。 –
我認爲這是你正在尋找的然後:http://stackoverflow.com/a/16105368/231316 –