匯出網頁內容

2022-06-12 12:48:05 字數 1723 閱讀 5892

折騰了一天的匯出報表工作,最終還是用了jspdf外掛程式,路程雖為坎坷,但是學習了不少。

首先,頁面中有**,有echart圖表,初步嘗試jspdf 匯出會有部分缺失,失敗了。考慮用

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

優點:1、有滾動條,滾動條以下內容也可列印。

2、列印出來排版正常,樣式不會丟失。

缺點:eachart 圖表,沒能被列印。(樣例**如下)

解決echart圖表未被列印問題,也就是在列印之前將echart圖表,轉換為,還好echart有介面可以實現。

define(function

(require,exports,module)

//將echart生成並放入img-box,並顯示img-box

var mychart=param.chartobj;

$imgbox.html('

').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) );

}}exports.printreport =printreport;

});/*

*呼叫時傳引數,echart物件,echart初始化的div的id

*/var param=

非常完美的將圖表轉換為了!然後列印,ok!可以問題又來了,為毛它列印出來,說什麼就是不分頁了呢?只要超出一頁部分就不可以列印了。嗚嗚。。。。

繼續解決不分頁的問題:

";

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+"

"; var pwin=window.open("print.htm","print"); //如果是本地測試,需要先新建print.htm,如果是在域中使用,則不需要

pwin.document.write(printstr);

pwin.document.close(); //這句很重要,沒有就無法實現

pwin.print();

}第一頁列印內容

第二頁列印內容

完美的分頁了。然而,興高采烈的用到專案中。。。。。。尼瑪! 我的**樣式怎麼沒有了!!!

好吧,若頁面圖表列印,無複雜樣式列印,window.print() 還是個不錯的選擇,然而,需求是匯出報表,好像不太一樣啊!

下篇繼續研究jspdf 匯出。

網頁內容抓取

之前採用xpath和正規表示式對網頁內容進行抓取,發現在有的地方不如人意,就採用了htmlparser對頁面進行解析,抓取需要的東西。htmlparser有點不好的地方在於不能對starttag和endtag進行匹配。採用了兩種方法進行抓取。第一種,抓取成對的tag之間的內容,採用了queue.qu...

定位網頁內容

模擬瀏覽器訪問後,解析定位網頁內容 from lxml import etree 匯入解析包 responsehtml requests.post url,data,headers xxheaders 此處簡寫post請求 parser etree.html responsehtml.text 使用...

C 網頁匯出PDF

注意 在cpechkin使用的時候 目標平台必須使用x86 設定邊緣距離 setmargins new margins 100,100,100,100 獲取網頁上的資料 byte buf sc.convert new uri pdf 儲存的路徑 string fn d pechkintest.pdf...