Я пытаюсь создать снимок изображения моего сайта, используя node-weshot, который зависит от phantomjs. Он работает, как ожидалось, на моей локальной машине, но когда я развертываю его на реальном сервере. Он просто запускает обратный вызов, говоря, что изображение генерируется. Но под этим процессом все еще создается изображение. (i.e) Имя файла сгенерировано, но оно не имеет размера и содержимого. Через 10 минут файл будет заполнен данными изображения. Однако шрифты не отображались правильно.Снимки HTML-страниц затем преобразуются в изображение с помощью node.js и phantom
вот скриншот:
и Heres мой WebShot код:
var options = {
screenSize: {
width: 403,
height: 403
},
shotSize: {
width: 403,
height: 403
},
script: function() {
$(function() {
window.callPhantom('takeShot');
});
},
takeShotOnCallback: true
};
webshot(baseUrl+frame_url, path, options, function(err) {
if(err){
return res.json({ok:false, error:err.error || err});
}
return res.json({image:baseUrl+img,ok:true});
});
Технически у меня есть 2 проблемы здесь:
- WebShot возвращает функцию обратного вызова, даже несмотря на то, формирования изображения еще не закончена.
- Сгенерированное изображение не отображает шрифты правильно. (Я использую Google шрифты здесь).
Есть ли какие-либо проблемы? Я вижу, что это связано с How do you take a screenshot of an angularjs app?
Или есть ли какие-либо хорошие альтернативы узлу-webshot и phantomjs?
Я думаю, что состояние загрузки веб-шрифтов не вызывает '$.load (func) ', который является таким же, как' $ (func) ', который сделал OP. –
Да, я все еще борюсь за то, чтобы заставить логику работать. Подход в целом кажется либо ненадежным, либо громоздким по сравнению с практическим осуществлением. – jang0
В своем сводном сводке вы написали, что jQuery не играет хорошо с webshot. Можете ли вы расширить это в своем посте? –