我需要使用iTextSharp.dll中的pdf生成,在html页面中使用类似
答案 0 :(得分:3)
你可以使用iTextSharp draw Shapes and Graphics。
答案 1 :(得分:1)
我在网上找到了这个,没有经过测试,但是如果它不适合你的话会在以后发现。
PdfWriter writer = PdfWriter.getInstance(document, out);
PdfContentByte cb = writer.getDirectContent();
cb.setLineWidth(2.0f); // Make a bit thicker than 1.0 default
cb.setGrayStroke(0.95f); // 1 = black, 0 = white
float x = 72f;
float 7 = 72f;
cb.moveTo(x, y);
cb.lineTo(x + 72f*6, y);
cb.stroke();
答案 2 :(得分:1)
因为,iTextSharp在理解几个HTML样式/标签方面确实存在局限性,并且在解析时会在html中包含<hr />
标记时出错。
解决方案是一个小解决方法并使用图形:
您需要创建一个扩展HTMLWorker
类的新类,并覆盖StartElement
方法,该方法为每个html元素的启动提供事件。
public class HTMLWorkerExtended : HTMLWorker
{
LineSeparator line = new LineSeparator(4f, 100f, BaseColor.BLACK, Element.ALIGN_CENTER, -1);
public HTMLWorkerExtended(IDocListener document): base(document)
{
}
public override void StartElement(string tag, IDictionary<string, string> str)
{
if (tag.Equals("hrline"))
document.Add(new Chunk(line));
else
base.StartElement(tag, str);
}
}
在您的html中,添加<hrline />
标记,无论您想要分页符。
现在使用HTMLWorkerExtended
class'对象来解析html。
using (TextReader htmlViewReader = new StringReader(htmlText))
{
using (var htmlWorker = new HTMLWorkerExtended(pdfDocument))
{
htmlWorker.Open();
htmlWorker.Parse(htmlViewReader);
}
}