国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

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 };產生了疑問

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 日韩精品一区二区三区在线观看 | 国产精品美女久久久久久久久久久 | 9色av| 中文日韩在线 | 精品视频在线播放 | 黄色小视频在线观看 | 黄色精品在线观看 | 日韩欧美在线观看 | 亚洲国产精品自拍 | 高清中文字幕 | 狠狠色噜噜狠狠狠8888米奇 | 99久久综合精品五月天 | 天天精品视频免费观看 | 国产精品久久久久久久久久妞妞 | 国产精品初高中精品久久 | 国产一区二区精品在线 | 免费久草 | 色婷婷av一区二区三区大白胸 | 久久久免费电影 | 亚洲乱码国产乱码精品精的特点 | 国产精品久久久久久久久久三级 | 欧美aaa级 | 在线中文视频 | 欧美精品一区二区三区蜜桃视频 | 男人的天堂久久 | 国产一级黄色大片 | 成人黄色短视频在线观看 | 精品亚洲一 | 亚洲综合大片69999 | 蜜桃精品久久久久久久免费影院 | 欧美日韩中文在线 | 国产乱码一区二区三区在线观看 | 黄色国产在线视频 | 国产黄色电影 | 亚洲xxxxx| www.欧美.com | 欧美午夜影院 | 国产成人高清视频 | 欧美1区 | 国产日韩欧美在线 | 午夜电影网址 |