c# - 尝试使用 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"]
我正在寻求您的帮助,在此先感谢您。
解决方案
为了使 PDF 链接被识别为文件下载,您需要添加一个特殊的Content-Disposition: attachment; file=xxx.pdf
HTTP 标头(请参阅此代码示例 -用 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 路径解析计划名称,并使用它来确定要传输的训练计划文件。
推荐阅读
- python - 将列表/数组与数据框列进行比较?
- python - 子进程:gekko 包中的“执行格式错误”
- java - Java Selenium + 2Captcha + 提交表单
- azure-devops-rest-api - 是否可以通过 REST API 设置变量组的权限?
- sql - 为什么在进行选择计数时转换失败?
- r - 组内降序不改变顺序
- python - 在 CIFAR10 数据集上训练深度卷积 GAN 时损失没有变化
- haskell - 运行时错误 - 函数中的非详尽模式
- c++ - 如何只减慢一部分代码而不减慢其余部分?
- c# - 从 ASP.Net 核心 Web API 中的发布请求在基本控制器中分配值