我使用itextsharp来创建pdf。我需要在其上放置XHTML,所以我使用XMLWorkerHelper类:
iTextSharp.tool.xml.XMLWorkerHelper worker = iTextSharp.tool.xml.XMLWorkerHelper.GetInstance();
worker.ParseXHtml(pdfWrite, doc, new StringReader(sb.ToString()));
但是我想为解析的XHTML指定一个位置。我该怎么做?
修改
我想我会在其他人遇到这个问题的情况下发布代码。下面提供的链接是针对JAVA的,而C#中的工作则有点不同。
首先,您需要一个用于收集元素的类:
class ElementHandlerClass : iTextSharp.tool.xml.IElementHandler
{
public List<IElement> elements = new List<IElement>();
public void Add(iTextSharp.tool.xml.IWritable input)
{
if (input is iTextSharp.tool.xml.pipeline.WritableElement)
{
elements.AddRange(((iTextSharp.tool.xml.pipeline.WritableElement)input).Elements());
}
}
}
然后你用它
ElementHandlerClass ehc = new ElementHandlerClass();
worker.ParseXHtml(ehc, new StringReader(sb.ToString()));
现在你有了元素。下一步是创建ColumnText并使用Elements填充它:
iTextSharp.text.pdf.ColumnText ct = new iTextSharp.text.pdf.ColumnText(pdfWrite.DirectContent);
ct.SetSimpleColumn(200, 300, 300, 500);
foreach (IElement element in ehc.elements)
ct.AddElement(element);
ct.Go();
答案 0 :(得分:0)
您需要在StackOverflow上结合前两个问题的答案。
您需要的第一个答案是How to get particular html table contents to write it in pdf using itext
在本回答中,您将学习如何将XHTML源解析为Element
个对象列表。
获得此列表后,您需要itext ColumnText ignores alignment
的答案您可以创建ColumnText
对象,使用setSimpleColumn()
方法定义矩形,使用带有addElement()
方法的XML Worker添加从XHTML检索到的所有元素,并{{1添加该内容。