我到处找这个问题,我还是找不到解决办法,这很烦人。
我使用xmlworker (itextSharp2.1)从html创建pdf。这对我来说很好,但是我需要添加页脚和页眉到每一页中,每个页面都是由已传递的html填充的。例如,我将这个字符串传递给作为footer的函数。
<table>
<tr>
<td>كند / źćąśęłżźń</td>
<td>something</td>
<td><img src="i_03_x2.png"/></td>
</tr>
</table>我需要使用XMLWorker.GetInstance()将其解析为list,并将其作为脚注添加:
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中的第二和第三列显示了,但是第一列不见了,所以我的问题是:
是否可以将我的字体(统一码)附加到
XMLWorkerHelper.GetInstance().ParseXHtml 用我的处理程序和字体?ParseXHtml函数有多个重载,但我需要使用DirectHandler作为IElement处理程序,使用MY字体(arialuni.ttf)作为字体提供程序。如能提供任何帮助,将不胜感激。
发布于 2014-06-26 11:18:00
好的,我知道了,首先,我需要完全从ParseXHtml函数中辞职。我在这个管道中使用了标准的XMLWorker:
PdfWriterPipeline pdf = new ElementHandlerPipeline(handler, null)而不是默认的:
PdfWriterPipeline pdf = new PdfWriterPipeline(document, writer);然后,我能够迭代处理程序中的元素。
foreach (var element in handler.elements)
{
singleCell.AddElement(element);
}
footerTable.AddCell(singleCell);https://stackoverflow.com/questions/24408418
复制相似问题