2014-07-03 26 views
5

Angular kullanan bir sayfanın PDF dosyasını indirmeye çalışıyorum. Bazen çalışır, bazen olmaz, sayfa {{}} ile yorumlanmamıştır.WKHTMLTOPDF ve Köşeli

PDF'i tam sayfa için nasıl indirebilirim (Angular ile yapılmış bazı http istekleri ve veriler gösterilmeden önce çok sayıda veri işleme var mı)?

DÜZENLEME (kod) (kod alakalı değildir):

Arka uç:

... 
wkhtmltopdf(url, options, function(code, signal) { 
    //'url' points to a route that has 'res.render()' binded to it 

    //Download the file 
}); 
... 

res.render('template', { data: data }); 

... 

Ön uç: Emin JavaScript zamanı vardır yapmak gerekir

<html> 
     <head> 
       ... 
     </head> 

     <body> 
       <div ng-app=".." class="container" ng-controller=".."> 

       </div> 

       <script src='/angular/lib/jquery/jquery.min.js'></script> 
       <script src='//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js'></script> 
       <script src='/angular/lib/bootstrap/bootstrap.min.js'></script> 
       <script src='/angular/lib/angular/angular.min.js'></script> 
       <script src='/angular/lib/underscore/underscore.js'></script> 
       <script src='/angular/lib/morris/morris.min.js'></script> 
       <script src='/angular/lib/morris/raphael-min.js'></script> 

       ... 
     </body> 
</html> 
+0

Bazı kodları gösterebilir misiniz? – Sugar

+0

En azından res.render() yöntemini görebilir miyiz? – Pak

+0

Soruya eklendi, ama olağanüstü bir şey değil. –

cevap

10

wkhtmltopdf dosyasının oluşturulmasından önce yürütmek için.

  1. basit ama oldukça kötü bir yol sayfasını pdf dönüştürülür önce işlemek için yeterli zaman vermek için milisaniye bazı numarası ile --javascript-delay seçeneği geçmektir: Bunu yapmak için en az iki yolu vardır.

  2. Biraz daha karmaşık ancak daha iyi bir yol, bazı dize ile --window-status seçeneğini geçirmektir. Bunu yaparsanız, wkhtmltopdf, window.status değeri, seçenekle ilettiğiniz dizeye eşit olacak şekilde pdf oluşturmaz. Ardından, uygulamanızda, sayfanız oluşturulduktan sonra bu değeri manuel olarak ayarlamanız gerekir.