样本:

在这个示例中,我们使用的是微软给我们提供的数据库,也就是家喻户晓的Northwind数据库。要下载Microsoft的免费样本Northwind数据库,您需要访问以下URL。下载Northwind数据库在页面上,您将找到下载按钮,如以下屏幕截图所示。

第2步:安装Microsoft的免费样本Northwind数据库
一个安装程序文件(.msi)将被下载。您可以将其保存在桌面上,因为下载完成后您需要执行它。文件下载完成后,您可以通过双击安装文件或右键单击然后单击上下文菜单中的安装选项来开始安装。
安装完成后,您可以在以下位置检查已安装的数据库文件,您将在安装文件夹中找到Northwind数据库。
步骤3:使用Management Studio将Northwind MDF文件附加到SQL Server数据库
现在,你需要启动SQL Server Management Studio中,然后用鼠标右键单击数据库文件夹在对象资源管理器。在上下文菜单中,单击Attach选项,如下所示
此选项将在SQL Server中打开文件浏览器,您需要导航并选择NORTHWIND.MDF文件并按OK按钮。
这就是你将看到数据库现在可以在SQL Server中与其他数据库一起使用。

如果因为数据库版本问题或其他原因,附加不上,那你就用那几个脚本文件。

安装图表:

这玩腻更新的还是比较快的,所以可用性还是比较大的。现在我们创建一个model(用于绑定图标值)

public class OrderModel
{
public string ShipCity { get; set; }
public int TotalOrders { get; set; }
}

我们现在肯定是要去创建我们的控制器了,定义如下。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
using WebApplication1.Models;
using System.Web.Helpers; namespace WebApplication1.Controllers
{
public class PdfController : Controller
{
public static PdfContext pdfcontextoBJ = new PdfContext();
// GET: Pdf
public ActionResult Index()
{
byte[] bytes = PopulateChart();
ViewBag.ChartImageUrl = "data:image/png;base64," + Convert.ToBase64String(bytes, 0, bytes.Length);
return View();
}
[HttpPost]
public FileResult Export()
{
byte[] bytes = PopulateChart();
ViewBag.ChartImageUrl = "data:image/png;base64," + Convert.ToBase64String(bytes, 0, bytes.Length);
using (MemoryStream stream = new System.IO.MemoryStream())
{
//Initialize the PDF document object.
using (Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 10f))
{
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, stream);
pdfDoc.Open(); //Add the Image file to the PDF document object.
iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(bytes);
pdfDoc.Add(img);
pdfDoc.Close(); //Download the PDF file.
return File(stream.ToArray(), "application/pdf", "Chart.pdf");
}
}
}
private static byte[] PopulateChart()
{
List<OrderModel> chartData = new List<OrderModel>();
//根据id统计的脚本
var objList = pdfcontextoBJ.Orders.GroupBy(u => u.ShipCity)
.Select(s => new
{
TotalOrders = s.Key,
count = s.Count()
}).ToList().Take(5).ToList(); foreach (var item in objList)
{
chartData.Add(new OrderModel()
{
TotalOrders = item.count,
ShipCity = item.TotalOrders
});
}
Chart chart = new Chart(width: 500, height: 500, theme: ChartTheme.Blue);
chart.AddTitle("USA City Distribution");
chart.AddSeries("Default", chartType: "Pie", xValue: chartData, xField: "ShipCity", yValues: chartData, yFields: "TotalOrders");
return chart.GetBytes(format: "jpeg");
}
}
}

在view中定义如下:

@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<img alt="Chart" src="@ViewBag.ChartImageUrl" style="height:300px; width:300px" />
<br />
@using (Html.BeginForm("Export", "Pdf", FormMethod.Post))
{
<input type="submit" id="btnSubmit" value="Export" />
}
</body>
</html>

效果图:

基于ITextSharp插件在ASP.NET MVC中将图表导出为PDF的更多相关文章

  1. [ASP.net MVC] 将HTML转成PDF档案,使用iTextSharp套件的XMLWorkerHelper (附上解决显示中文问题)

    原文:[ASP.net MVC] 将HTML转成PDF档案,使用iTextSharp套件的XMLWorkerHelper (附上解决显示中文问题) [ASP.net MVC] 将HTML转成PDF档案 ...

  2. ASP.NET MVC中将数据从Controller传递到视图

    ASP.NET MVC中将数据从Controller传递到视图方法 1.ViewData ViewData的类型是字典数据,key-value 如:ViewData["Data"] ...

  3. ASP.NET MVC中将控制器分离到类库的实现

    前言 在ASP.NET MVC的开发中,我们创建完项目之后,ASP.NET MVC是已Model-Controller-View的形式存在的,在创建项目自动生成的内容上Model我们很容易分离成类库, ...

  4. ASP.NET MVC 中将数据从View传递到控制器中的三种方法(表单数据绑定)

    http://www.cnblogs.com/zyqgold/archive/2010/11/22/1884779.html 在ASP.NET MVC框架中,将视图中的数据传递到控制器中,主要通过发送 ...

  5. 【精品分享二】ASP.NET MVC系列精品图书高清PDF下载

    更多图书请关注:第一教育云电子书平台  http://book.1eduyun.com/ 注:本专题提供的所有的电子书下载资源均系收集于百度云,本网站(http://book.1eduyun.com/ ...

  6. Asp.Net MVC 使用FileResult导出Excel数据文件

    MVC实现Excel导出功能,今天来记录一下. 采取了最简单的方法.(转载)   用的是Html拼接成Table表格的方式,返回 FileResult 输出一个二进制的文件. 第一种:使用FileCo ...

  7. 在asp.net mvc中将checkbox传到后台时总是true的解决方法

    我今天在做同城交友网站(www.niyeuwo.com)时发现,不管checkbox是否选 中,传到Controller时总是true,后来在查网上查了资料才知道,原来是jQuery在传值时写错了. ...

  8. ASP.NET MVC 中将FormCollection与实体间转换方法

    将Action动作中传递的FormCollection转变成对应的实体,可以使用Controller的TryUpdateModel()方法. public ActionResult Create(Fo ...

  9. ASP.NET MVC 中将数据从View传递到控制器中的表单提交法

    本方法以搜索功能为例,在view中输入要搜索的关键字,提交到相应controller中进行处理. view中代码: <div class="searchBox"> @u ...

随机推荐

  1. JAVA中Sql时间格式与util时间格式转换

    关于时间格式转化: java.util.Date 与 java.sql.Date 互换 sql是子类 字符串转化成java.util.Date     SimpleDateFormat date =n ...

  2. Java开源生鲜电商平台-商品表的设计(源码可下载)

    Java开源生鲜电商平台-商品表的设计(源码可下载) 任何一个电商,无论是B2C还是B2B的电商,商品表的设计关系到整个系统架构的核心. 1. 商品基本信息表:用单词:goods做为商品表 2. 商品 ...

  3. 深入理解SpringAOP之代理对象

    本篇文章主要带大家简单分析一下AOP的代理对象,至于AOP是什么,如何配置等基础性知识,不在这里讨论.阅读前请先参考:代理模式,在这之前我们需要了解springframework的三个核心接口与get ...

  4. 「SQL归纳」树形结构表的存储与查询功能的实现——通过路径方法(非递归)

    一.树形结构例子分析: 以360问答页面为例:http://wenda.so.com/c/ 我们通过观察URL,可以明确该页面的数据以树形结构存储,下面三块模块分别为: ①根节点 ②根节点的第一层子节 ...

  5. 学生管理系统_排序后通过name删除列表里的字典

    l = [{'name': 'wangfan', 'age': 18, 'sex': 'nan'}, {'name': 'wangerfan', 'age': 10, 'sex': 'nan'}, { ...

  6. HTML DOM innerHTML 属性及实现图片连续播放

    定义和用法 innerHTML 属性设置或返回表格行的开始和结束标签之间的 HTML. 语法 tablerowObject.innerHTML=HTML 实例 下面的例子返回了表格行的 inner H ...

  7. Java (三、数组)

    Java 数组 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java 语言中提供的数组是用来存储固定大小的同类型元素. 声明数组变量 首先必须声明数组 ...

  8. js相关

    记录工作中用到的js实用方法: 1. 判断包含:indexOf "https".indexOf("http") 包含结果为0,不包含结果为-1: 通常用(&qu ...

  9. js动态计算移动端rem适配问题

    第一:css3的media query来实现适配,例如下面这样: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2 ...

  10. PAT1046: Shortest Distance

    1046. Shortest Distance (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue The ...