2 つをブリッジするために使用しているモジュールとして Phantom-Proxy を使用して、Node.js 内から PhantomJS のビューポートを設定できないように見える問題があります。
Web ページのスクリーン グラブを取得することに成功しましたが、上で述べたように、ビューポート サイズを設定することはできません。
Phantom-Proxyのドキュメントでは、viewport プロパティを次のように設定する必要があると書かれています。
//set viewport size for browser window
proxy.page.set('viewportSize',
{ width:320, height:480 }, function (result) {
console.log(result.toString().cyan);
worldCallback.call(self);
});
したがって、私のコードでは、実際にスクリーングラブを取得する行の上にビューポートを設定しようとしました:
module.exports = function (app, phantom) {
app.get('/url/:url/:width?/:height?', function (req, res) {
phantom.create({"debug": true}, function (proxy) {
var page = proxy.page;
page.set('viewportSize', { width: 320, height: 480 }, function (result) {
console.log(result);
});
page.open(req.params.url, function () {
page.waitForSelector('body', function () {
page.renderBase64('PNG', function (img) {
res.set('Content-Type', 'image/png');
res.end(new Buffer(img, 'base64'), 'binary');
});
});
});
});
});
};
これがうまくいくとは思わなかったので、page.open
insidepage.set
の callback を入れてみましたが無視され、page.set
insidepage.open
の callbackを入れてからその中に入れてみpage.waitForSelector
ました。
ただし、ビューポートはまだ無視されているようです!
これでどんな助けでも大歓迎です!皆さん、ありがとうございました