在PDF中插入一个按钮

时间:2012-09-14 18:41:55

标签: c# asp.net pdf

如何制作pdf文件有功能按钮?

这是PDF背后的代码

 public partial class Pdf_Default : System.Web.UI.Page
{
protected override void Render(HtmlTextWriter writer)
{
    MemoryStream mem = new MemoryStream();
    StreamWriter twr = new StreamWriter(mem);
    HtmlTextWriter myWriter = new HtmlTextWriter(twr);
    base.Render(myWriter);
    myWriter.Flush();
    myWriter.Dispose();
    StreamReader strmRdr = new StreamReader(mem);
    strmRdr.BaseStream.Position = 0;
    string pageContent = strmRdr.ReadToEnd();
    strmRdr.Dispose();
    mem.Dispose();
    writer.Write(pageContent);
    CreatePDFDocument(pageContent);


}
public void CreatePDFDocument(string strHtml)
{

    string strFileName = HttpContext.Current.Server.MapPath("test.pdf");
    // step 1: creation of a document-object
    Document document = new Document();
    // step 2:
    // we create a writer that listens to the document
    PdfWriter.GetInstance(document, new FileStream(strFileName, FileMode.Create));
    StringReader se = new StringReader(strHtml);
    HTMLWorker obj = new HTMLWorker(document);
    document.Open();
    obj.Parse(se);
    document.Close();
    ShowPdf(strFileName);



}
public void ShowPdf(string strFileName)
{
    Response.ClearContent();
    Response.ClearHeaders();
    Response.AddHeader("Content-Disposition", "inline;filename=" + strFileName);
    Response.ContentType = "application/pdf";
    Response.WriteFile(strFileName);
    Response.Flush();
    Response.Clear();
}

}

当我尝试放置后退按钮时,PDF文件仅显示标签测试。 我想创建一个可以转到另一个页面的按钮(非PDF)。谢谢!

1 个答案:

答案 0 :(得分:1)

当您使用Response.ContentType = "application/pdf";等发送PDF文件作为回复时,可能会发生许多事情,最常见的是:
1-正在您网站上导航的用户没有默认的PDF查看器,并且会显示“另存为...”对话框(通常)。
2-用户具有默认PDF查看器,它在浏览器外部显示为外部应用程序或集成在其中。

在任何这些情况下,您只需显示PDF文件,不涉及任何HTML内容。如果要显示一个将用户带回您站点的按钮,则必须修改PDF文件并在其中添加按钮。

另一个选择是embed the pdf file inside a page而不是将其作为回复发送。在这种情况下,您可以将按钮添加到包装PDF文件的页面。