首页 > 解决方案 > 尝试使用 c# asp.net 后面的代码将超链接分配到 PDF 内的 pdf 位置

问题描述

尝试使用 c# asp.net Web 表单将超链接分配到 PDF 内的 PDF 位置。

这是我的 C# 代码分配给 pdf 位置的链接 url。

protected void FillPDF()
{
    Dictionary<string, string> formFieldMap;

    pdfPath = Path.Combine(Server.MapPath("../img/fullapplication_final.pdf"), ""); // need to take
    formFieldMap = PDFHelper.GetFormFieldNames(pdfPath);
    string livepath = "http://www.example.com/";

    if (!string.IsNullOrEmpty(Request.QueryString["RegistrationId"].ToString() as string))
    {
        bo.Para1 = Request.QueryString["RegistrationId"].ToString();
        bo.Para2 = "3";

        DataTable dt = bl.Admin_Get_UserInformation(bo);

        formFieldMap["text_attchedfilertpin"] = livepath + "TrainingPlan/" + dt.Rows[0]["TrainingPlan"].ToString();
    }
}

这段代码显示了一个 url,就像www.example.com/my.pdf它的输出一样。

但我需要输出是这样的:click here to download pdf

我正在尝试使用新代码来获取我需要的输出:

HyperLink DynLink = new HyperLink();
DynLink.ID = "DynLink1";
DynLink.Text = "click here to donwload pdf";
DynLink.NavigateUrl = livepath + "TrainingPlan/" + dt.Rows[0]["TrainingPlan"].ToString();

Page.Controls.Add(DynLink);

但我无法分配pdf使用视图

formFieldMap["text_attchedfilertpin"]

我正在寻求您的帮助,在此先感谢您。

标签: c#asp.net

解决方案


为了使 PDF 链接被识别为文件下载,您需要添加一个特殊的Content-Disposition: attachment; file=xxx.pdfHTTP 标头(请参阅此代码示例 -用 C# 下载 PDF 文件的代码)。

假设您想要一个链接http://www.example.com/plans/my123.pdf,单击该链接会启动名为“my123”的培训计划的 PDF 文件下载。

您可以创建一个 HTTP 处理程序 - 一个PlanPDF实现IHttpHandler. 在处理程序的代码中,您可以设置正确的 Content-Type、Content-Disposition、Content-Length 并按照上面的链接传输 PDF 文件。有关 IHttpHandler 的简单示例,请参阅本文

接下来,您需要配置 URL 重写,以便将请求/plans/my123.pdf映射到您的处理程序PlanPDF。您可以在“Web.config”中执行此操作(请参阅相同的代码项目文章以获取示例)。

从请求 URL 路径解析计划名称,并使用它来确定要传输的训练计划文件。


推荐阅读