2013-05-18 9 views
9

In PDFs in Phantom zu erzeugen, kann ich die Papiergröße wie folgt festgelegt:Einstellung für paper PDF-Druck in Casper

page.paperSize = { 
    height: '8.5in', 
    width: '11in', 
    orientation: 'landscape', 
    border: '0.4in' 
}; 

dann der page.render (Ausgang) Funktion generiert ordnungsgemäß eine PDF. Mit anderen Worten, die Größe ist korrekt und es hat viele Seiten dieser Größe.

Ich kann dies in Casper nicht funktionieren (und ich bin mir nicht sicher, ob es unterstützt wird). So zum Beispiel:

var casper = require('casper').create({ 
    paperSize: { 
     height: '8.5in', 
     width: '11in', 
     orientation: 'landscape', 
     border: '0.4in' 
    }, 
    logLevel: 'debug', 
    verbose: true 
}); 

....this.capture('print.pdf'); ... 

erstellt ein PDF mit einer einzigen, sehr langen Seite. Die Einstellung viewportSize behebt das Problem nicht.

Gibt es eine Möglichkeit aus Casperjs das Objekt pagesize zugreifen?

Antwort

16

Sie können auf paperSize über casper.page.paperSize zugreifen. Sie müssen dies jedoch nach dem Aufruf von casper.start() festlegen, andernfalls wird casper.page gleich null sein.

Hier ist ein Beispiel:

var casper = require("casper").create(); 
casper.start(); 

casper.page.paperSize = { 
    width: '11in', 
    height: '8.5in', 
    orientation: 'landscape', 
    border: '0.4in' 
}; 

casper.thenOpen('http://www.facebook.com/', function() { 
    this.capture('test.pdf'); 
    this.echo('created pdf.'); 
}); 

casper.run(); 
+0

Das funktioniert gut. Danke – Jeff

+0

@hexid ist es sowieso eine benutzerdefinierte Kopf- und Fußzeile hinzugefügt, bevor casperjs speichert die Seite als PDF? – Anagio

+0

@Anagio Sie können [this] (http://stackoverflow.com/q/17125955/395353) Frage für ein Beispiel überprüfen. – hexid

Verwandte Themen