上海启嘟渡科技商贸有限公司
SEARCH

与我们合作

我们专注提供互联网一站式服务,助力企业品牌宣传多平台多途径导流量。
主营业务:网站建设、移动端微信小程序开发、营销推广、基础网络、品牌形象策划等

您也可通过下列途径与我们取得联系:

微 信: wxyunyingzhe

手 机: 15624122141

邮 箱:

MVC中网页导出为PDF怎么实现

更新时间:2025-01-10 07:32:40

在MVC框架中实现网页内容导出为PDF的功能,通常涉及以下几个关键步骤:

1. **PDF模板准备**:创建一个.NET报表文件(.rdlc),该文件将作为PDF输出的模板。

2. **数据绑定**:在报表中绑定所需的数据,这些数据通常来自于数据库或服务层的模型。

3. **渲染报表**:使用`LocalReport`类渲染报表,并指定输出格式为PDF。

4. **输出PDF**:将渲染后的报表以字节流的形式输出到浏览器,并设置适当的HTTP头部,以便浏览器能够处理下载或内嵌显示PDF。

以下是对原始代码段进行润色和修正后的内容:

```csharp

// 准备PDF输出方法

public byte[] ExportTicket(List admissionFormIds, string reportPath, out string mimeType)

{

LocalReport localReport = new LocalReport();

localReport.ReportPath = reportPath;

// 绑定数据源

ReportDataSource reportDataSource = new ReportDataSource("dsList", GetAdmissionTicketList(admissionFormIds.ToArray()));

localReport.DataSources.Add(reportDataSource);

string reportType = "PDF";

string encoding;

string fileNameExtension;

string deviceInfo = "PDF";

// 渲染报表

byte[] renderedBytes = localReport.Render(

reportType,

deviceInfo,

out mimeType,

out encoding,

out fileNameExtension,

null,

null

);

return renderedBytes;

}

// 在Action中处理HTTP标头并输出PDF

[HttpGet]

public ActionResult GetAdmissionForms(int serviceId, string condition)

{

var list = new RegistrationBLL().GetExamineeByCondi(serviceId, condition);

if (list == null || list.Count == 0)

{

// 返回提示信息

return RedirectToAction("SaveSuccess", "ExamService", new { action = "GetExamineeByPage", controller = "Registration", serviceid = serviceId });

}

var sl = new List();

foreach (var ren in list)

{

sl.Add(ren.fAdmissionFormId);

}

try

{

var bll = new AdmissionTicketBLL();

string rdlcPath = Server.MapPath("~/Resources/AdmissionTicket.rdlc");

string mimeType;

byte[] renderedBytes = bll.ExportTicket(sl, rdlcPath, out mimeType);

// 设置HTTP标头,内嵌显示PDF

Response.AddHeader("content-disposition", string.Format("inline;filename=AdmissionTicket_{0}.pdf", sl[0]));

// 输出PDF

return File(renderedBytes, mimeType);

}

catch

{

// 错误处理

return RedirectToAction("SaveSuccess", "ExamService", new { action = "GetExamineeByPage", controller = "Registration", serviceid = serviceId });

}

}

```

在上述代码中,我进行了以下修正和优化:

- 修正了数据源绑定的方法,确保数据正确传递到报表中。

- 移除了不必要的`out`参数,并使用了命名参数,使方法调用更加清晰。

- 在输出PDF时,我采用了内嵌显示的方式,这样用户可以在浏览器中直接查看PDF,而不是下载。

- 添加了对异常的处理,确保在发生错误时用户能够得到相应的提示。

通过这些步骤,MVC中的网页内容就可以成功地导出为PDF文件了。

多重随机标签

猜你喜欢文章

QQ客服 电话咨询