最近有个需求,需要将html转换成pdf并支持下载

1.需要两个js库 下载 提取码: vab7

<script type="text/javascript" src="~/lib/html2canvas.js"></script>
<script type="text/javascript" src="~/lib/jsPdf.debug.js"></script>

2.下面是js

<script type="text/javascript">
function savePDF() {
 html2canvas($("#pdf"), {
allowTaint: true,//允许跨域
height: document.getElementById("pdf").scrollHeight,//为了使竖向滚动条的内容全部展示,这里必须指定 width: document.getElementById("pdf").scrollWidth,//为了使横向滚动条的内容全部展示,这里必须指定
background: "#FFFFFF",//设置背景色为白色,一定要设置你想要的颜色,不然默认是黑色的
onrendered: function (canvas) { var contentWidth = canvas.width;
var contentHeight = canvas.height; //一页pdf显示html页面生成的canvas高度;
var pageHeight = contentWidth / 592.28 * 841.89;
//未生成pdf的html页面高度
var leftHeight = contentHeight;
//页面偏移
var position = ;
//a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高
var imgWidth = 595.28;
var imgHeight = 592.28/contentWidth * contentHeight; console.log(canvas);
//返回图片URL,参数:图片格式和清晰度(0-1)
var pageData = canvas.toDataURL('image/jpeg', 1.0); //方向默认竖直,尺寸ponits,格式a4【595.28,841.89]
var pdf = new jsPDF('', 'pt', 'a4'); //有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89)
//当内容未超过pdf一页显示的范围,无需分页
if (leftHeight < pageHeight) {
pdf.addImage(pageData, 'JPEG', , , imgWidth, imgHeight );
} else {
while(leftHeight > ) {
pdf.addImage(pageData, 'JPEG', , position, imgWidth, imgHeight)
leftHeight -= pageHeight;
position -= 841.89;
//避免添加空白页
if(leftHeight > ) {
pdf.addPage();
}
}
}pdf.save('content.pdf'); //当前页面直接下载pdf
          
          //如果你是直接下载pdf以上就能达到你的要求,如果你需要后台保存到指定文件夹下,继续进行下边内容
var datauri = pdf.output('dataurlstring');
console.log(datauri);
//去掉前面的字符串后,就是文件的加密字符串
var base64 = datauri.substring();
console.log(base64);
          //传到后台 流 中保存
$.ajax({
url: "/OnlineExamination/SavePDF",
type: "post",
data: { str: base64,path:'路径' },
success: function (json) { }
})
}
})
}
savePDF();
</script>

3.下附后台保存代码

       [HttpPost]
public void SavePDF(string str,string path)
{if (!Directory.Exists(path))
Directory.CreateDirectory(path);
Base64StringToFile(str, path);
}
public void Base64StringToFile(string strbase64, string strurl)
{
try
{
strbase64 = strbase64.Replace(' ', '+');
MemoryStream stream = new MemoryStream(Convert.FromBase64String(strbase64));
FileStream fs = new FileStream(strurl, FileMode.OpenOrCreate, FileAccess.Write);
byte[] b = stream.ToArray();
//byte[] b = stream.GetBuffer();
fs.Write(b, , b.Length);
fs.Close(); }
catch (Exception e)
{ }
}

html转成pdf 下载,支持后台保存的更多相关文章

  1. 使用JavaScript将当前页面保存成PDF,支持图片和文字的保存

    前端开发的朋友们可能会遇到这个需求:将您负责开发的网页的全部内容,包括文字和图片,一起保存成一个PDF文件.如果采用屏幕截图的话,默认Windows操作系统的截图按钮无法完整截取超过一屏幕的屏幕内容. ...

  2. Javascript将html转成pdf,下载(html2canvas 和 jsPDF)

    最近碰到个需求,需要把当前页面生成pdf,并下载.弄了几天,自己整理整理,记录下来,我觉得应该会有人需要 :) 项目源码地址:https://github.com/linwalker/render-h ...

  3. html转成pdf,下载(html2canvas 和 jsPDF)

    参考链接:https://github.com/linwalker/render-html-to-pdf

  4. 老菜鸟学习:Javascript 将html转成pdf

    起因:处理某个项目,需要把页面上的数据(订单.运单)等导出pdf. 第一个想法:从 Java 层去想.但是经过各种资料查询和实践,第一个想法宣告放弃: 幸好客户的要求是:导出的 pdf 尺寸要和打印的 ...

  5. 【jsPDF】jsPDF插件实现将html页面转换成PDF,并下载,支持分页

    1.目的:在前段是 jQuery库 或者 VUE库 或者两者混合库,将html 页面和数据 转换成PDF格式并下载,支持分页 1.项目背景: 对客户报修记录进行分类统计,并生成各种饼图.柱状图.线性图 ...

  6. vue将网页中的特定部分转成pdf并下载(仅供个人学习记录)

    先安装支持 将页面html转换成图片npm install --save html2canvas 将图片生成pdfnpm install jspdf --save 组件引用: import html2 ...

  7. 多页Excel转换成PDF时如何保存为单独文件

    通过ABBYY PDF Transformer+图文识别软件,使用PDF-XChange打印机将多页Excel工作簿转换成PDF文档(相关文章请参考ABBYY PDF Transformer+从MS ...

  8. html 转成 pdf 进行预览、下载、打印

    html 页面转成 pdf,直接看代码: 参考地址: https://github.com/linwalker/render-html-to-pdf 给出代码 方便粘贴: var downPdf = ...

  9. 小师妹学IO系列文章集合-附PDF下载

    目录 第一章 IO的本质 IO的本质 DMA和虚拟地址空间 IO的分类 IO和NIO的区别 总结 第二章 try with和它的底层原理 简介 IO关闭的问题 使用try with resource ...

随机推荐

  1. 【u128】又一个数字游戏

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 小明拿出了一个素数集合,{2, 3, 5, 7, 11, 13, -, 127, -},他发现,从小到 ...

  2. MySQL之Field 'email' doesn't have a default value问题

    MySQL在出现这个Field xxx doesn't have a default value错误的原因是:我们设置了该字段为非空,但是我们没有设置默认值照成的. 比如我们创建一个表: CREATE ...

  3. QQ三方登录

    申请了十天,最终通过了审核,能够上线了,事实上申请的第一天,站点的qq登录已经做好了,而且能够用測试帐号登录,但提交审核后,总是通只是,提示:您的站点审核未通过.原因是"未放置QQ登录but ...

  4. PHP PDO扩展整理,包括环境配置\基本增删改查\事务\预处理

    相关文章:PHP的mysql扩展整理,操作数据库的实现过程分析    PHPmysqli扩展整理,包括面向过程和面向对象的比较\事务控制\批量执行\预处理 介绍 PDO是一种PHP程序连接数据库的接口 ...

  5. springboot上传文件时500错误,提示临时目录无效

    org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nes ...

  6. H3C CIDR

  7. dotnet 通过 WMI 获取系统启动的服务

    本文告诉大家如何通过 WMI 获取系统启动的服务 通过 Win32_Service 可以获取系统启动的服务 获取的时候只需要拿Caption和State就可以 var mc = "Win32 ...

  8. 【Ubuntu】查看端口占用及关闭

    1.查看已连接的服务端口 (ESTABLISHED) netstat有一个快捷键[ss] netstat -a ss -a 2.查看所有的服务端口(LISTEN,ESTABLISHED) netsta ...

  9. Team Foundation Server 2015使用教程【5】:默认团队checkin权限修改

  10. PyCharm永久破解方法

    1,下载破解补丁: https://pan.baidu.com/s/1LcXvupL00XTU-HHE1J6ynA 提取码: 8t1w 下载补丁文件 jetbrains-agent.jar 并将它放置 ...