的点击一个PDF我有一个新的要求,在我的网页中的按钮,点击后,它会显示该网页为PDF。在研究中,我发现iTextSharp
用于此目的。 但我在我的网页上也有很多Telerik
和ASP控件。我是否也可以使用iTextSharp
在PDF中获得?显示Web页面的一个按钮
如果是,那么任何人都可以,请给我提供一个基础环节,因为我还没有碰到过这个工具来又开始使用iTextSharp
。
据@ahaliav我用下面的代码试图答案。但是,我没有掌握pdf。
protected void btnExport_Click(object sender, EventArgs e)
{
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=TestPage.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
MemoryStream msOutput = new MemoryStream();
TextReader reader = new StringReader(HtmlContent);
// step 1: creation of a document-object
Document document = new Document(PageSize.A4, 30, 30, 30, 30);
HTMLWorker worker = new HTMLWorker(document);
// step 2:
// we create a writer that listens to the document
// and directs a XML-stream to a file
PdfWriter writer = PdfWriter.GetInstance(document, Response.OutputStream);
// step 3: we create a worker parse the document
// step 4: we open document and start the worker on the document
document.Open();
worker.StartDocument();
// step 5: parse the html into the document
worker.Parse(reader);
// step 6: close the document and the worker
worker.EndDocument();
worker.Close();
document.Close();
//Response.Write(document);
//Response.End();
}
protected override void Render(HtmlTextWriter writer)
{
// setup a TextWriter to capture the markup
TextWriter tw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(tw);
// render the markup into our surrogate TextWriter
base.Render(htw);
// get the captured markup as a string
string pageSource = tw.ToString();
// render the markup into the output stream verbatim
writer.Write(pageSource);
// remove the viewstate field from the captured markup
HtmlContent = Regex.Replace(pageSource,
"<input type=\"hidden\" name=\"__VIEWSTATE\" id=\"__VIEWSTATE\" value=\".*?\" />",
"", RegexOptions.IgnoreCase);
// the page source, without the viewstate field, is in viewStateRemoved
// do what you like with it
}
请帮忙。 我还有其他的选择,那就是当我点击一个按钮时显示整个网页的图像。任何人都可以引导我对这两个问题的任何可能的方向。
我终于改变了我的代码:
Response.ContentType = "application/msword";
Response.AddHeader("content-disposition", "attachment;filename=TestPage.doc");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
MemoryStream msOutput = new MemoryStream();
有了这个,我能够得到一个包含所有我的控制MSWORD文件,但我也得到了一些不必要的文本,我怎么能删除,如果有人遇到同样的问题?
我使用许可[wkhtmltopdf(http://code.google.com/p/wkhtmltopdf/)我的一个项目是基于网页生成PDF。 –
我可以得到telerik控件也在那个pdf –
不知道,但我的猜测是否定的。 –