PDF из содержимого страницы asp.net - PullRequest
0 голосов
/ 28 ноября 2011

Я пытаюсь создать PDF-файл с содержимым на странице ("ReturnPage.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 / ReturnPage.aspx? ID = 23' не является действительным виртуальным путем.

Может кто-нибудь сказать, пожалуйста, что я делаю не так?

Спасибо!

Ответы [ 2 ]

1 голос
/ 28 ноября 2011

Чтобы превратить веб-страницу в pdf, вы должны преобразовать ее в pdf на сервере.Для этого у вас должна быть программа на сервере , которая может сделать это за вас.

Я пробовал различные конвертеры веб-страниц в pdf и один излучшие из них - это бесплатная программа с открытым исходным кодом, которая называется wkhtmltopdf .

. После создания файла PDF вы можете либо перенаправить пользователя на вновь созданный файл PDF (не рекомендуется), либо запросить чтобы загрузить его с помощью диалога сохранения файла .

Если вы застряли, просто найдите wkhtmltopdf в stackoverflow или задайте другой вопрос.

1 голос
/ 28 ноября 2011

Вы не можете отправить файл клиенту и перенаправить его в новое место во время того же запроса. Вы также не можете создать PDF из веб-страницы без какого-либо компонента, который преобразует HTML в PDF, это (довольно немного) сложнее, чем, я думаю, вы пытаетесь сделать.

Что касается вашего исключения, вы уверены, что returnPage.aspx существует? :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...