2015-04-14 7 views
10

Mein Endziel laden ist eine lokale HTML-Datei mit Javascript eingebettet zu öffnen, eine Karte mit Polygonen zu schaffen, und nehmen Sie einen Screenshot davon PhantomJS verwenden. Ich habe eine einfache JS-Datei geschrieben, dies zu tun:PhantomJS Versagen Google Maps

var page = require('webpage').create(); 
page.open('https://www.google.com/maps', function(status) { 
    console.log('State: ' + status); 
    if(status === 'success') { 
     page.render('example.pdf', {format: 'pdf', quality: '100'}); 
    } 
    phantom.exit(); 
}); 

Dieser den Fehler zurückgibt:

ReferenceError: Can't find variable: google 

ich dies auf einem lokalen HTML-Datei versucht haben und auf anderen Websites mit Google Maps und ich halten den gleichen Fehler bekommen. Es ist mir gelungen, einen Screenshot von anderen Websites ohne Google Maps zu erstellen. Im Internet zu suchen, scheint es nicht so zu sein, dass die Leute solche Probleme hatten und Screenshots von Seiten mit Google Maps gemacht haben ... also frage ich mich, was könnte falsch sein.

Noch ein Hinweis: Ich installierte PhantomJS als ein Juwel in meinem Schienen-Projekt und leite die JavaScript-Datei über die Schienen Konsole dieses Juwel mit. Ich habe es mit der Standardinstallation von PhantomJS (v 2.0.0) versucht und es hat immer noch nicht funktioniert.

+5

mit der laufenden Versuchen '--ignore-ssl-Fehler = true' Kommandozeilenoption. –

+0

Ich kann Ihren Beispielcode in Ordnung mit 'phantomjs script.js' ausführen. Aber eine Sache zu prüfen: Google Karten-Kacheln (oder Vektordaten in diesen Tagen) werden asynchron geladen selbst, Sie könnten einen 'window.setTimeout' mit einer Wartezeit von ein paar Sekunden hinzuzufügen haben um den inneren' page.open' Block Die Seite wird also als PDF gerendert, wenn sie vollständig geladen ist. Ansonsten ist Ihr PDF leer/grau. – chrki

+0

@ArtjomB Lösung nicht für mich arbeiten :( – JustGage

Antwort

0

sollten Sie puppeter geben ein zu gehen, macht es so einfach:

const puppeteer = require('puppeteer'); 
(async() => { 
    const browser = await puppeteer.launch(); 
    const page = await browser.newPage(); 
    await page.goto('https://example.com'); 
    await page.screenshot({path: 'example.pdf'}); 

    await browser.close(); 
})();