1

如何使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)。谢谢!

4

1 回答 1

1

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

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

另一种选择是将 pdf 文件嵌入页面中,而不是将其作为响应发送。在这种情况下,您可以将按钮添加到包装 PDF 文件的页面。

于 2012-09-14T19:31:45.583 回答