Itextsharp下根据Echarts图像生成pdf
一.生成一个简单的pdf
publicActionResultGetPdf()
{
MemoryStream ms =newMemoryStream();
Document document =newDocument();
PdfWriter.GetInstance(document, ms);
document.Open();
document.Add(newParagraph("Yes Master!"));
document.Close();
returnFile(ms.ToArray(),"application/pdf","ceshi.pdf");
}
得到一个pdf
public ActionResult GetPdf()
{
it.Font font = new it.Font(BaseFont.CreateFont("C:\\Windows\\Fonts\\simhei.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED), ); MemoryStream ms = new MemoryStream();
it.Document document = new it.Document(); PdfWriter.GetInstance(document, ms); document.Open(); document.Add(new it.Paragraph("Yes Master!"));
document.Add(new it.Paragraph("其疾如风,其徐如林,侵掠如火,不动如山,难知如阴,动如雷震", font)); document.Close();
return File(ms.ToArray(), "application/pdf", "ceshi.pdf");
}
支持中文的pdf

BaseFont.AddToResourceSearch("iTextAsian.dll");
BaseFont.AddToResourceSearch("iTextAsianCmaps.dll");
<!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>ImagePdf</title>
<script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.js"></script>
</head>
<body>
<div>
<button id="btnSearch" tabindex="" class="slbutton" style="border-style: none;">
导出</button>
<div id="main" style="height: 400px"></div><input id="maininput" type="hidden"/>
<iframe id="exportContainer" style="display: none;"></iframe>
<script src="http://echarts.baidu.com/build/dist/echarts.js"></script>
<script type="text/javascript">
$(function () {
$("#btnSearch").bind("click", function () {
ExportPDF();
});
});
// 路径配置
require.config({
paths: {
echarts: 'http://echarts.baidu.com/build/dist'
}
}); // 使用
require(
[
'echarts',
'echarts/chart/bar' // 使用柱状图就加载bar模块,按需加载
],
function (ec) {
// 基于准备好的dom,初始化echarts图表
var myChart = ec.init(document.getElementById('main')); var option = {
animation :false,
tooltip: {
show: true
},
legend: {
data: ['销量']
},
xAxis: [
{
type: 'category',
data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
}
],
yAxis: [
{
type: 'value'
}
],
series: [
{
"name": "销量",
"type": "bar",
"data": [, , , , , ]
}
]
}; // 为echarts对象加载数据
myChart.setOption(option);
$("#maininput").val(myChart.getDataURL('jpg'));
}
);
function ExportPDF() { var imgurl = $("#maininput").val();
$.ajax({
async: true,
type: "POST",
url: "/PdfDemo/SendImagePdfUrl",
cache: false,
timeout: * * ,
dataType: "json",
data: {
ImageUrl: imgurl },
success: function (result) {
if (result != null && result.message == "success") {
var src = "/PdfDemo/GetImagePdf?ID=" + result.filename;
$("#exportContainer").attr("src", src);
}
else {
if (result != null) {
alert(result.Message);
}
}
},
beforeSend: function () {
$("#btnSearch").prop("disabled",true);
},
complete: function () {
$("#btnSearch").prop("disabled", false);
}
});
}
</script>
</div>
</body>
</html>
前台代码
public ActionResult SendImagePdfUrl(string ImageUrl)
{
JsonResult j = new JsonResult();
string fileName = System.Guid.NewGuid().ToString();
if (!string.IsNullOrEmpty(ImageUrl))
{
Image pdfImage = base64ToPic(ImageUrl);
pdfImage.Save(Server.MapPath("~") + "/pdfimage/" + fileName + "1.jpg");
var data = new { message = "success", filename = fileName };
j.Data = data;//返回单个对象;
}
else
{
var data = new { message = "未提供Url" };
j.Data = data;//返回单个对象;
}
return j;
}
/// <summary>
/// //对字节数组字符串进行Base64解码并生成图片
/// </summary>
/// <param name="ImageUrl"></param>
/// <returns></returns>
public Image base64ToPic(string ImageUrl)
{ if (ImageUrl == null) //图像数据为空
{
return null;
}
try
{
//将一开始的data:png等信息去掉,只剩base64字符串
String[] url = ImageUrl.Split(',');
String u = url[];
//Base64解码
byte[] imageBytes = Convert.FromBase64String(u);
Image image;
//生成图片
using (MemoryStream ms = new MemoryStream(imageBytes, , imageBytes.Length))
{
// Convert byte[] to Image
ms.Write(imageBytes, , imageBytes.Length);
image = Image.FromStream(ms, true);
}
return image;
}
catch (Exception e)
{
return null;
}
}
Base64ToPic
public ActionResult GetImagePdf(string ID)
{
it.Font font = new it.Font(BaseFont.CreateFont("C:\\Windows\\Fonts\\simhei.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED), );
MemoryStream ms = new MemoryStream();
it.Document document = new it.Document();
PdfWriter.GetInstance(document, ms);
document.Open();
document.Add(new it.Paragraph("Yes Master!"));
document.Add(new it.Paragraph("其疾如风,其徐如林,侵掠如火,不动如山,难知如阴,动如雷震", font));
List<string> imageStringList = GetImageString(ID, ); foreach (var item in imageStringList)
{
try
{
//如果传过来的是Base64
//it.Image image = it.Image.GetInstance(base64ToPic(item), System.Drawing.Imaging.ImageFormat.Jpeg);
//如果传过来的是地址
it.Image image = it.Image.GetInstance(Server.MapPath("~") + "/pdfimage/" + item + ".jpg"); image.Alignment = it.Image.ALIGN_LEFT;
image.ScalePercent();
document.Add(image);
}
catch (Exception e)
{
document.Add(new it.Paragraph("图片" + item + "不存在"));
}
}
document.Close();
document.Dispose();
return File(ms.ToArray(), "application/pdf", "ceshi.pdf");
}
将图片放入pdf
/// <summary>
/// 得到这一系列Image的Url
/// </summary>
/// <param name="ID">相同部分</param>
/// <param name="count">共有几张</param>
/// <returns></returns>
public List<string> GetImageString(string ID, int count)
{
List<string> ImageStringList = new List<string>(); for (int i = ; i < count; i++)
{
ImageStringList.Add(ID + count.ToString());
}
return ImageStringList;
}
其他代码
欢迎拍砖。
Itextsharp下根据Echarts图像生成pdf的更多相关文章
- 昇腾CANN论文上榜CVPR,全景图像生成算法交互性再增强!
摘要:近日,CVPR 2022放榜,基于CANN的AI论文<Interactive Image Synthesis with Panoptic Layout Generation>强势上榜 ...
- itextsharp生成pdf后的直接打印问题
原文 itextsharp生成pdf后的直接打印问题 小弟这两天用itextsharp生成pdf文档,生成的pdf可以直接保存在指定路径的文件夹下,可是user不想保存,想要点一下button,就可以 ...
- itextsharp利用模板生成pdf文件笔记
iTextSharp是一款开源的PDF操作类库,使用它可以快速的创建PDF文件. 中文参考网站:http://hardrock.cnblogs.com/ http://pdfhome.hope.com ...
- C# html生成PDF遇到的问题,从iTextSharp到wkhtmltopdf
我们的网站业务会生成一个报告,用网页展示出来,要有生成pdf并下载的功能,关键是生成pdf. 用内容一段段去拼pdf,想想就很崩溃,所以就去网上找直接把html生成pdf的方法. 网上资料大部分都是用 ...
- iTextSharp生成pdf的一个简单例子
效果图: 参考:http://www.cnblogs.com/CareySon/archive/2011/11/09/2243496.html http://www.cnblogs.com/julyl ...
- linux下编译bib、tex生成pdf文件
实验: 在linux环境下,编译(英文)*.bib和*.tex文件,生成pdf文件. 环境: fedora 20(uname -a : Linux localhost.localdomain 3.19 ...
- ITextSharp用来生成 PDF 的一个组件
iTextSharp 是用来生成 PDF 的一个组件,在 1998 年夏天的时候,Bruno Lowagie ,iText 的创作者,参与了学校的一个项目,当时使用 HTML 来生成报告,但是,使用 ...
- C#使用itextsharp生成PDF文件
项目需求需要生成一个PDF文档,使用的是VS2010,ASP.NET. 网络上多次搜索没有自己想要的,于是硬着头皮到itextpdf官网看英文文档,按时完成任务,以实用为主,共享一下: 使用HTML文 ...
- 使用 ItextSharp HTML生成Pdf(C#)
以前生成pdf的时候.因为生成的pdf数据是固定的,所以先做好pdf模板,动态的数据可以先用占位符 生成的时候.找到占位符坐标.把数据填充进去 优点:先做好模板.生成的pdf 表格.文.内容会好看一些 ...
随机推荐
- sql 执行动态语句
没看明白,可不可以描述清楚点哦 收获园豆:5 回复 | artwl | 专家六级 |园豆:16486 | 2011-09-01 09:10 exec (select top 2 * from pub ...
- java 根据 根节点及所有子成员 构造树tree
实体类entity package com.ompa.biz.entity; import java.util.ArrayList; import java.util.List; public cla ...
- Linux下Mysql安装
1.下载安装包 首先查看Linux版本: [root@localhost ~]# lsb_release -a LSB Version: :core-4.0-amd64:core-4.0-noarch ...
- 动手学习TCP:客户端状态变迁
上一篇文章中介绍了TCP连接的建立和终止. 通过实际操作了解到,在TCP协议工作过程中,客户端和服务端都会接收或者发送特定标志的TCP数据包,然后进入不同的状态. 也就是说,TCP协议就是一个包含多种 ...
- HFSS学习(一)计划
2015-11-28 21:05:33 基本概念 边界条件 激励源 建模 网格划分 变量设置与调谐优化 仿真结果 实例 微带线仿真 Ku波段微带线发夹线滤波器仿真 介质滤波器 腔体滤波器 微带一分四功 ...
- FIR数据广播结构-提高时钟速率
直接型的信号流图 采用转置得到广播结构的信号流图 对于一个常系数四阶的FIR滤波器 直接型的RT L结构如下: 转置后的RTL结构
- 使用LVS实现负载平衡之Windows Server 2008配置
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.承载于 II ...
- ZBrush中的笔刷该怎样制作
ZBrush给用户提供了许多的常用笔刷,我们可以使用这些笔刷自由地发挥创意.为了让雕刻速度更快,模型刻画更细致我们常常也会创建自定义笔刷,本文教您在ZBrush中制作笔刷. 查看更多内容请直接前往:h ...
- HDU 1698 & UESTC 1228 Just a hook
算是线段树中的一道水题了,必须用到懒操作,否则会超时.或者也可以刚开始不计算和,只更新节点,最后算整个线段的颜色和. 1.懒操作法 /* 908ms 3448KB in HDU OJ*/ #inclu ...
- leetcode : valid binary search tree
不能通过 当元素中 有 val == INT_MAX 或者 val == INT_MIN /** * Definition for a binary tree node. * struct Tree ...