建帖之前先感谢@刘为民 同学提供的技术支持,刘同学在项目过程中率先使用了此方法。此帖抛砖引玉,希望后续遇到此类需求的同学们读完此贴后能顺利解决项目需求。

项目需求如下图,需要将页面中蓝色线框的部分导出为PDF文件,并且样式布局保持和页面中呈现的一致:
blob.png

步骤一:将此页面复制一份出来,只保留蓝色线框中要导出的部分,生成PDF时将以此页面的样式布局为样本,如下图:blob.png


步骤二:下载以下附件,解压后的“wkhtmltopdf.exe“文件放入网站根目录,“PDFHelper.cs”文件放入网站App_Code目录:

PDFHelper.zip

wkhtmltopdf.zip


步骤三:在导出按钮的事件中加入以下代码:

var url = "http://edp.snai.edu/Courses/CoursesData.aspx"; //要抓取下来的页面地址
var fileName = "全年课表.pdf"; //导出的文件名
var filePath = UploadFilePath + fileName; //文件保存的路径
var fileDir = Server.MapPath(filePath);
if (File.Exists(fileDir))
{
    FileInfo file = new FileInfo(fileDir);
    if (file.CreationTime < DateTime.Now.AddHours(-2))
    {
        File.Delete(fileDir);
    }
}
PdfHelper.HtmlToPdf(url, fileDir);
Response.Redirect(filePath); //页面跳转到PDF地址,或输出PDF文件


在项目中测试此功能,在以上代码执行完之后,会在服务器上生成PDF文件,并自动跳转至PDF文件的路径

特别注明:解决问题的方法有千千万万个,大家千万别为了其中某一个方法而陷入死胡同,若此方法未能解决你在项目中遇到的问题,请另辟途径,并记录下你的光辉战绩,以指引后来人~