【发布时间】:2014-12-14 08:51:03
【问题描述】:
我使用 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 并用元素填充它:
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();
【问题讨论】:
-
感谢您提供 C# 语法。这肯定有助于进一步的参考。我总是很难将我的答案从 Java 翻译成 C#,所以当有人以工作 C# 代码的形式提供关于我的 Java 答案的反馈时,它会有所帮助。
标签: xhtml itextsharp