一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - java利用phantomjs進行截圖實例教程

java利用phantomjs進行截圖實例教程

2021-06-03 11:52這個名字有點特別 Java教程

PlantomJs是一個基于javascript的webkit內核無頭瀏覽器 也就是沒有顯示界面的瀏覽器,你可以在基于 webkit 瀏覽器做的事情,它都能做到。下面這篇文章主要給大家介紹了關于java利用phantomjs進行截圖的相關資料,需要的朋友可以參考下

前言

最近工作中遇到一個需求,需要實現截圖功能,斷斷續續查找資料、驗證不同的實現方法終于算基本搞定了頁面截圖,因為中間過程曲折花費較多時間,分享出來幫助大家快速實現截圖

為什么選用phantomjs進行截圖

截圖可以實現的方式有很多,比如:

  • selenium
  • htmlunit
  • html2image、、、and so on但是這些實現的截圖效果都不好。selenium只能實現截屏,不能截取整個頁面,而htmlunit、html2image對js的支持效果并不好,截下來的圖會有很多空白。phantomjs就是萬精油了,既能截取整個頁面,對js支持的效果又好

plantomjs提供了如 css 選擇器、dom操作、json、html5、canvas、svg 等。phantomjs 的用處很廣泛,如網絡監控、網頁截屏、頁面訪問自動化、無需瀏覽器的 web 測試等,這里只用到網頁截屏。

前期準備

安裝phantomjs。mac os

java" id="highlighter_457205">
?
1
brew install phantomjs

命令行的方式進行截圖

安裝以后我們就可以小試牛刀了

打開終端,輸入以下命令:

?
1
2
3
4
/users/hetiantian/softwares/phantomjs/bin/phantomjs
/users/hetiantian/softwares/phantomjs/examples/rasterize.js
https://juejin.im/post/5bb24bafe51d450e4437fd96
/users/hetiantian/desktop/juejin-command.png

查看效果

java利用phantomjs進行截圖實例教程

發現圖片沒有加載好

來看以下剛剛的命令行:

/users/hetiantian/softwares/phantomjs/bin/phantomjs:phantomjs可執行文件保存地址
/users/hetiantian/softwares/phantomjs/examples/rasterize.js:rasterize.js文件地址

這段命令可以理解為用phantomjs去運行rasterize.js文件,所以要想解決圖片空白的問題我們需要去看一下rasterize.js文件。

?
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
"use strict";
var page = require('webpage').create(),
 system = require('system'),
 address, output, size, pagewidth, pageheight;
 
if (system.args.length < 3 || system.args.length > 5) {
 console.log('usage: rasterize.js url filename [paperwidth*paperheight|paperformat] [zoom]');
 console.log(' paper (pdf output) examples: "5in*7.5in", "10cm*20cm", "a4", "letter"');
 console.log(' image (png/jpg output) examples: "1920px" entire page, window width 1920px');
 console.log('         "800px*600px" window, clipped to 800x600');
 phantom.exit(1);
} else {
 address = system.args[1];
 output = system.args[2];
 page.viewportsize = { width: 600, height: 600 };
 if (system.args.length > 3 && system.args[2].substr(-4) === ".pdf") {
  size = system.args[3].split('*');
  page.papersize = size.length === 2 ? { width: size[0], height: size[1], margin: '0px' }
           : { format: system.args[3], orientation: 'portrait', margin: '1cm' };
 } else if (system.args.length > 3 && system.args[3].substr(-2) === "px") {
  size = system.args[3].split('*');
  if (size.length === 2) {
   pagewidth = parseint(size[0], 10);
   pageheight = parseint(size[1], 10);
   page.viewportsize = { width: pagewidth, height: pageheight };
   page.cliprect = { top: 0, left: 0, width: pagewidth, height: pageheight };
  } else {
   console.log("size:", system.args[3]);
   pagewidth = parseint(system.args[3], 10);
   pageheight = parseint(pagewidth * 3/4, 10); // it's as good an assumption as any
   console.log ("pageheight:",pageheight);
   page.viewportsize = { width: pagewidth, height: pageheight };
  }
 }
 if (system.args.length > 4) {
  page.zoomfactor = system.args[4];
 }
 page.open(address, function (status) {
  if (status !== 'success') {
   console.log('unable to load the address!');
   phantom.exit(1);
  } else {
   window.settimeout(function () {
    page.render(output);
    phantom.exit();
   }, 200);
  }
 });
}

嘗試一:

對page.viewportsize = { width: 600, height: 600 };產生了疑問

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品林美惠子在线观看 | 第一次破苞h | 亚洲成人影院在线观看 | 四虎精品成人a在线观看 | 亚洲swag精品自拍一区 | 玩两个少妇女邻居 | 美女gif趴跪式抽搐动态图 | 亚洲国产精品综合欧美 | 91精品综合久久久久m3u8 | 婷婷在线成人免费观看搜索 | 精品午夜中文字幕熟女人妻在线 | 8mav福利视频 | 91极品在线观看 | 娇妻与公陈峰姚瑶小说在线阅读 | 欧美特级特黄a大片免费 | 国产精品日本一区二区不卡视频 | 四虎最新网址在线观看 | 国产视频久久久 | 男人天堂色 | 亚洲国产黄色 | 国产网站免费看 | 91精品国产麻豆国产自产在线 | www.av免费| 护士的小嫩嫩好紧好舒服 | 精品久久香蕉国产线看观看亚洲 | 男生同性啪视频在线观看 | 好紧水好多 | 精品播放| 秋霞理论在一l级毛片 | 成年人免费观看视频网站 | 男人狂擦女人的下面视频 | 欧美整片在线 | 精品九九视频 | 日日艹| 超级乱淫伦短篇小说做车 | 调教老师肉色丝袜的故事 | 俄罗斯大白屁股 | 亚洲国产精品无码中文字幕 | 日韩精品一区二区三区老鸭窝 | 国产高清一区二区三区免费视频 | 久久精品无码一区二区日韩av |