的方法ConvertToHtmlForColumnText(String text)
返回PdfContentByte
沒有意義,畢竟方法只具有String text
一起工作,沒有PdfWriter
或PdfContentByte
。
方法ConvertToHtmlForColumnText(String text)
返回的元素稍後添加到ColumnText
,另一方面確實有意義,例如,
List<IElement> ConvertToHtmlForColumnText(String text)
{
ListElementHandler listHandler = new ListElementHandler();
XMLWorkerHelper.GetInstance().ParseXHtml(listHandler, new StringReader(text));
return listHandler.List;
}
使用該定製IElementHandler
實施
public class ListElementHandler : IElementHandler
{
List<IElement> elements = new List<IElement>();
public List<IElement> List => elements;
public void Add(IWritable w)
{
if (w is WritableElement)
{
foreach (IElement e in ((WritableElement)w).Elements())
{
elements.Add(e);
}
}
}
}
可用於檢索的更高版本可以使用句法糖
此自定義擴展被添加到
ColumnText
這樣
String text = "<p>Hello <strong>world</strong>!</p>";
List<IElement> parsedText = ConvertToHtmlForColumnText(text);
using (Document document = new Document(PageSize.A4))
{
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(result, FileMode.Create));
document.Open();
ColumnText ct = new ColumnText(writer.DirectContent);
ct.SetSimpleColumn(document.Left, document.Bottom, document.Right, document.Top);
ct.Add(parsedText);
ct.Go();
}
元件
public static class ColumnTextListExtension
{
public static void Add(this ColumnText ct, List<IElement> elements)
{
foreach (IElement e in elements)
{
ct.AddElement(e);
}
}
}
導致
來源
2017-05-04 08:56:32
mkl
雖然很容易解析HTML並且在'ColumnText'繪製它,你的方法'ConvertToHtmlForColumnText(字符串文本)'返回'PdfContentByte'沒有意義。 'ConvertToHtmlForColumnText'應該根據HTML'String'返回一個'PdfContentByte'嗎? – mkl
「ConvertToHtmlForColumnText」方法將分析html字符串,並生成正確的對象以插入到ColumnText中,並在PDF中顯示爲富文本。 – Kanfor
*「生成要在ColumnText中插入的正確對象」* - 這將是可能的,但您希望它返回一個「PdfContentByte」而不是您想要構造「ColumnText」的。 – mkl