PHP使用phantomjs导出网址的图片,并使用proc_open输出到浏览器

这篇博客介绍了如何利用PHP调用phantomjs脚本捕获网页图片,并通过proc_open函数将图片数据直接输出到浏览器。主要分为两个步骤:首先编写了名为capture.js的phantomjs脚本,然后在PHP部分执行shell命令,使用proc_open函数处理输入输出流,将图片以PNG格式发送给用户。
摘要由CSDN通过智能技术生成

1. phantomjs部分,保存为capture.js

用法:
phantomjs export.js http://www.bugshoot.cn png 5000 225*1364

"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:\tphantomjs capture.js URL filename [paperwidth*paperheight] [cookies] [zoom]');
    console.log('Cookies: key=value;key=value')
    console.log('Eg1:\n\t// 生成图片为 ifmicro.png, 并且大小为宽1820px, 高1920px')
    console.log('\tphantomjs capture.js http://www.bugshoot.cn/ ifmicro.png 1920px*1920px');
    console.log('Eg2:\n\t// 生成图片为 ifmicro.jpg, 并且大小为宽1820px, 高1920*3/4px')
    console.log('\tphantomjs capture.js http://www.bugshoot.cn/ ifmicro.png 1920px');
    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[3].substr(-2) === 
你可以使用 Node.js 中的 `phantomjs` 模块来实现定时访问网址并生成 PDF 的功能。以下是一个简单的示例: 1. 安装 `phantomjs` 模块 ```shell npm install phantomjs-prebuilt ``` 2. 编写代码 ```javascript const phantom = require('phantom'); // 设置要访问的网址 const url = 'https://www.example.com'; // 创建一个 Promise,用于等待页面加载完成 const pageLoaded = new Promise((resolve) => { setTimeout(resolve, 5000); }); // 使用 PhantomJS 打开网页,并等待页面加载完成 phantom.create().then((ph) => { ph.createPage().then((page) => { page.open(url).then(() => { pageLoaded.then(() => { // 等待页面渲染完成 setTimeout(() => { // 生成 PDF 文件 page.render('example.pdf').then(() => { console.log('PDF 文件已生成'); ph.exit(); }); }, 5000); }); }); }); }); ``` 在上面的代码中,我们使用 `phantom.create()` 方法创建一个 PhantomJS 实例,然后使用 `ph.createPage()` 方法创建一个页面对象。接下来,我们使用 `page.open()` 方法打开要访问的网址,并等待页面加载完成。为了确保页面已经加载完成,我们使用一个 Promise 对象等待 5 秒钟。当页面加载完成后,我们等待另外 5 秒钟,确保页面已经渲染完成,然后使用 `page.render()` 方法生成 PDF 文件。最后,我们使用 `ph.exit()` 方法关闭 PhantomJS 实例。 在实际应用中,你可以将上面的代码保存为一个脚本文件,并使用 Node.js 的定时任务模块(如 `node-schedule`)来定时执行该脚本。例如,以下是一个使用 `node-schedule` 模块每天凌晨 1 点钟执行上面脚本的示例代码: ```javascript const schedule = require('node-schedule'); // 每天凌晨 1 点钟执行 const job = schedule.scheduleJob('0 1 * * *', function() { // 在这里执行上面的代码 }); ``` 运行上面的代码后,该定时任务将会在每天的凌晨 1 点钟执行,并生成一个名为 `example.pdf` 的 PDF 文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值