导出网页内容

折腾了一天的导出报表工作,最终还是用了jspdf插件,路程虽为坎坷,但是学习了不少。

首先,页面中有表格,有echart图表,初步尝试jspdf 导出会有部分缺失,失败了。考虑用

window.print(),虽然原始,但是很好用。

优点:1、有滚动条,滚动条以下内容也可打印。

2、打印出来排版正常,样式不会丢失。

缺点:eachart 图表,没能被打印。(样例代码如下)

<html>
    <head>
    <title>div print</title>
</head>
<body>
<input name="b_print" type="button" class="ipt"   onClick="printdiv(‘div_print‘);" value=" Print ">
<div id="div_print" style="height: 200px;overflow:auto; ">
<div style="height: 500px;">
    <h1 style="Color:Red">The Div content which you want to print</h1>
    <img src="12.jpg" />
    <img src="12.jpg" />
</div>
</div>
</body>
    <script language="javascript">
        function printdiv(printpage)
        {
            var headstr = "<html><head><title></title></head><body>";
            var footstr = "</body>";
            var newstr = document.all.item(printpage).innerHTML;
            var oldstr = document.body.innerHTML;
            document.body.innerHTML = headstr+newstr+footstr;
            window.print();
            document.body.innerHTML = oldstr;
            return false;
        }
    </script>
</html>

  解决echart图表未被打印问题,也就是在打印之前将echart图表,转换为图片,还好echart有接口可以实现。

define(function(require,exports,module){
    function printReport(param){
    var $imgBox = $("#img-box_"+param.chartBox);
    var $chartBox = $("#"+param.chartBox);
    if ($imgBox.length <= 0) {
        $chartBox.after(‘<div id="img-box_‘+param.chartBox+‘"></div>‘);
        $imgBox = $("#img-box_"+param.chartBox);
    }
    // 将echart生成图片并放入img-box,并显示图片img-box
    var mychart=param.chartObj;
    $imgBox.html(‘<img src="‘ + mychart.getDataurl() + ‘"/>‘).css(‘display‘,‘block‘);
    // 隐藏echart图chart-box
    $chartBox.css(‘display‘,‘none‘);
    // 调整img大小
    var $img = $imgBox.find(‘img‘);
    var imgWidth = $img.width();
    var showWidth = "500"; // 显示宽度,即图片缩小到的宽度
    if (imgWidth > showWidth) { // 只有当图片大了才缩小
        var imgNewHeight = $img.height() / (imgWidth / showWidth);
        $img.css({‘width‘: showWidth + ‘px‘, ‘height‘: imgNewHeight + ‘px‘});
    }
}
exports.printReport = printReport;
});
/**调用时传参数,echart对象,echart初始化的div的id */
var param={
    chartObj:echart,
    chartBox:"myechartId"
}

  非常完美的将图表转换为了图片!然后打印,OK!可以问题又来了,为毛它打印出来,说什么就是不分页了呢?只要超出一页部分就不可以打印了。呜呜。。。。

继续解决不分页的问题:

<html>
<head>
    <title>无标题文档</title>
    <script language="javascript">
        //打印代码
        function Print()
        {
            var printStr ="<html><head><title></title></head><body>";
            var content = "";
            var str = document.getElementById(‘page1‘).innerHTML;     //获取需要打印的页面元素 ,page1元素设置样式page-break-after:always,意思是从下一行开始分割。
            content = content + str;
            str = document.getElementById(‘page2‘).innerHTML;     //获取需要打印的页面元素
            content = content + str;
            printStr = printStr+content+"</body></html>";
            var pwin=window.open("Print.htm","print"); //如果是本地测试,需要先新建Print.htm,如果是在域中使用,则不需要
            pwin.document.write(printStr);
            pwin.document.close();                   //这句很重要,没有就无法实现
            pwin.print();
        }
    </script>
</head>

<body >
<div><input type="button" value="打印" onclick="Print()" /></div>
<div id="page1">
    <table width="100%"  border="0" cellpadding="0" cellspacing="0"  style="page-break-after:always" >
        <tr><td>第一页打印内容</td></tr>
    </table>
</div>
<div id="page2">
    <table width="100%"  border="0" cellpadding="0" cellspacing="0" id="content" >
        <tr><td>第二页打印内容</td></tr>
    </table>
</div>
</body>
</html>

  完美的分页了。然而,兴高采烈的用到项目中。。。。。。尼玛! 我的表格样式怎么没有了!!!

好吧,若页面图表打印,无复杂样式打印,window.print() 还是个不错的选择,然而,需求是导出报表,好像不太一样啊!

下篇继续研究jspdf 导出。

时间: 2024-08-29 21:55:28

导出网页内容的相关文章

网页内容导出word/excel的js代码

IE设置: 工具-> Internet选项-> 安全->自定义级别-> 对没有标记安全级别的ActiveX控件进行初始化  设为启用! 1.导出word //指定区域导出到Word function html2word(Area) { var oWD = new ActiveXObject("Word.Application"); var oDC = oWD.Documents.Add("", 0, 1); var oRange = oDC.

如何收藏互联网上的任意网页到系统某个分类下,之后进行批量导出发布等---博客备份专家的博文收藏功能您不可不知

我们常用的有道云笔记,印象笔记等软件都有一个实用的功能,复制任何你看到的喜欢的网页到笔记. 新版的博客备份专家也支持了这个功能.比有道云笔记更为强大的地方在于,等收藏的文章多了的时候,您可以通过博客备份专家最常用的导出PDF,CHM功能将这些您逐渐收藏的博文导出成一个专集,之后是离线浏览还是放到手机阅读随你便.接下来,我们就看看这个功能如何使用. 首先,假设您已经会新建收藏分类,如果还不会请先移步阅读一下之前我们写过的 [很喜欢看某方面的文章,如何将不同站点,不同博主同一类别的文章归类整合到一起

导出 VuePress构建的网站为 PDF

前言 学 Rust 也有一段时间了,网上也有不少官方文档的中文翻译版,但是似乎只有 Rust中文网站 文档一直是最新的,奈何并没有 PDF 供直接下载,是在是不太方便,为了方便阅读以及方便后续文档更新,决定用 Python 写一个爬虫将网页下载下来保持为 PDF. 最后完成结果如下: 是的没错,将官网样式也保留下来成功转为 PDF,接下来分享一下整个爬虫的过程,最终的爬虫可以导出任意 VuePress 搭建的网站为 PDF. 爬虫 依赖库的选定 requests BeautifulSoup4 p

通用导出excel(可控制内容)

实体类 package util; import java.sql.Timestamp; public class Book { private int bookId; private String name; private String author; private float price; private String isbn; private String pubName; private Timestamp date; public Book() { } public Book(i

C#中导出数据到Excel表格中

之前PM交给我一个自动化测试的Case,让我抓取页面上的数据到Excel表格中,刚好又接了一个之前人家做的系统, 刚好看到可以用NPOI导数据,就动手试试,成功导出. 由于鄙人比较菜,也比较懒, 怕自己忘记了,今天就总结一下,以防下次用可以参考. 1.要使用NPOI,首先需要在Project中Install NPOI的 Package. 右键点击Project------>Manage NuGet Packages---->Search NPOI----->点击搜索到的NPOI然后点击等

前端JS脚本将网页表格导出为Excel

话不多说,上代码! <!DOCTYPE> <html> <head> <title>Excel Test</title> </head> <body> <div style="width:100%;padding:40px;"> Excel Test </div> <table id="excel"> <tr> <td>Na

Excel导入导出例子

一键上传 在ssh中上传批量数据表格 1.必须同步提交form表单 2.Form表单编码方式:multipart/form-data 3.提交方式必须为post 4.上传文件对应input type="file" 为导入按钮添加一键上传效果: //为导入添加一键上传 $("#button-import").upload({ action : '../../area_batchImport.action', //在文件选中时,作出校验 onSelect : funct

使用Apache POI导出Excel小结--导出XLS格式文档

使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI导出Excel小结--导出XLSX格式文档 使用Apache POI导出Excel--大数量导出 导出XLS格式文档 做企业应用项目难免会有数据导出到Excel的需求,最近在使用其,并对导出Excel封装成工具类开放出来供大家参考.关于Apache POI Excel基本的概念与操作我在这里就不啰嗦

.net 自己写的操作Excel 导入导出 类(以供大家参考和自己查阅)

由于现在网页很多都关系到Excel 的操作问题,其中数据的导入导出更是频繁,作为一个菜鸟,收集网上零散的知识,自己整合,写了一个Excel导入到GridView ,以及将GridView的数据导出到EXCEL的类方法,以供参考和方便自己以后查阅. 1 #region 引用部分 2 using System; 3 using System.Collections.Generic; 4 using System.Linq; 5 using System.Web; 6 using System.Dat