我正在尝试在页面上创建内容的pdf(“returnsPage.aspx?id =”returnId),并允许用户在单击按钮时直接下载。
但是在我的onClick方法中,我有以下代码:
lnkLoadPDF.CommandArgument = "/returns/returnsPage.aspx?id="+returnId.ToString();
string virtualPath = lnkLoadPDF.CommandArgument;
string fileName = System.IO.Path.GetFileName(virtualPath);
Response.Clear();
Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
Response.WriteFile(virtualPath);
Response.ContentType = "";
Response.End();
Response.Redirect("/returns/returnsPage.aspx?id="+returnId);
返回此错误:
'/ returns / returnsPage.aspx?id = 23'不是有效的虚拟路径。
有谁能告诉我我做错了什么?
谢谢!
答案 0 :(得分:1)
您无法将文件发送到客户端,并且会在同一请求期间将其重定向到新位置。如果没有将HTML转换为PDF的某种组件,您也无法从网页创建PDF,这比我认为您尝试尝试的更加棘手。
至于你的异常,你确定returnsPage.aspx存在吗? :)
答案 1 :(得分:1)
要将网页转换为pdf,您必须将其转换为服务器上的pdf。为此,您必须拥有program on the server才能为您做到这一点。
我尝试了各种网页到pdf转换器,其中一个更好的是一个名为wkhtmltopdf的免费开源程序。
创建pdf后,您可以将用户重定向到新创建的pdf(不鼓励)或prompt them to download it with a savefile dialog。
如果您遇到问题,只需在stackoverflow上搜索wkhtmltopdf或发布其他问题。