2
使用iTextSharp的Im。 5.4.1。我正在嘗試從HTML生成PDF。下面粘貼的代碼行給出錯誤名稱'標記'在當前上下文中不存在。這適用於itextSharp ver 5.2.1。有人可以告訴標記屬於5.4.1版中的哪一類。無法在itextsharp中找到標記
document.Add(new Header(**Markup**.HTML_ATTR_STYLESHEET, string.Empty));
代碼:
/// <summary>
/// Renders the PDF to an array of bytes
/// </summary>
public byte[] RenderPdf()
{
//Document is inbuilt class, available in iTextSharp
MemoryStream file = new MemoryStream();
Document document = new Document(this.PageSize);
PdfWriter writer = PdfWriter.GetInstance(document, file);
//allow modifications of the document
if (this.BeforeRender is RenderEvent)
{
this.BeforeRender(writer, document);
}
//header
document.Add(new Header(Markup.HTML_ATTR_STYLESHEET, string.Empty));
document.Open();
//render each page that has been added
foreach (HtmlPdfPage page in this._Pages)
{
document.NewPage();
//generate this page of text
MemoryStream output = new MemoryStream();
StreamWriter html = new StreamWriter(output, Encoding.UTF8);
//get the page output
html.Write(string.Concat(HtmlToPdfBuilder.DOCUMENT_HTML_START, page._Html.ToString(), HtmlToPdfBuilder.DOCUMENT_HTML_END));
html.Close();
html.Dispose();
//read the created stream
MemoryStream generate = new MemoryStream(output.ToArray());
StreamReader reader = new StreamReader(generate);
foreach (var item in (IEnumerable)HTMLWorker.ParseToList(reader, this._Styles))
{
document.Add((IElement)item);
}
//cleanup these streams
html.Dispose();
reader.Dispose();
output.Dispose();
generate.Dispose();
}
//after rendering
if (this.AfterRender is RenderEvent)
{
this.AfterRender(writer, document);
}
//return the rendered PDF
document.Close();
return file.ToArray();
}
的標記類很久以前已被刪除,用的HTMLWriter一起。你想創建HTML? –
ya。我正在嘗試在.net MVC中生成pdf,並通過Hugo Bonacci發現了這個代碼。你能不能直接找到一種更好的方法來在MVC應用程序中從HTML生成PDF。 – BumbleBee
我不認識Hugo Bonacci,但是如果他告訴你你需要Markup課程來做到這一點,那麼他錯了。你可以閱讀http://www.rgagnon.com/javadetails/java-html-to-pdf-using-itext.html –