2014-09-19 136 views
3

我們cron phantomjs rasterize.js http://website.com filename.pdf停止工作(空白PDFs),當網站變得更加「花哨」。如果我將其更改爲filename.png,它可以工作。使PhantomJS等待整個頁面加載之前呈現爲PDF

我試着改變這個超時到9999在光柵化,我仍然得到一個空白PDF。默認的rasterize.js在網站切換前工作。

任何想法如何改變/添加到光柵化,使其再次工作?

page.open(address, function (status) { 
    if (status !== 'success') { 
     console.log('Unable to load the address!'); 
     phantom.exit(); 
    } else { 
     window.setTimeout(function() { 
      page.render(output); 
      phantom.exit(); 
     }, 9999); 
}); 

回答

2

我在一年前遇到了一些問題。對於我來說(如果我沒記錯的話),它只能用@media標籤。 (再一次,如果我沒記錯的話)Pdf是使用media print css生成的,而png則不是。試試當你刪除所有@media print css時會發生什麼。

編輯23/9/2014

我不知道如何有問題的,這是你(你想要多少努力把它),但如果是我,我會嘗試這樣的事情第一:

var page = require('webpage').create(); 
var args = require('system').args; 

var output_file = args[1], url =args[2]; 

page.viewportSize = { width: 1440, height: 900 }; 
page.paperSize = { 
    format: "A4", 
    orientation: "landscape", 
    margin: { left: "1cm", right: "1cm", top: "1cm", bottom: "1cm" } 
}; 

console.log(url); 

page.onLoadFinished = function (status) { 
    window.setTimeout(function() { 
     try { 
      page.evaluate(function() { 
       jQuery("link").each(function (i, v) { 
        jQuery(v).attr("media", "all"); 
       }); 
      }); 
      page.render(output_file); 
     } 
     catch (e) { 
      status = e.message; 
     } 
     console.log(status + ';;' + output_file); 
     phantom.exit(); 
    }, 1000); 
} 

try { 
    page.open(url); 
    console.log('loading'); 
} 
catch (ex) { 
    console.log(ex.message); 
    phantom.exit(); 
} 

Offcourse要在評估函數中做什麼取決於什麼HTML的內容。

告訴問題出錯的一種更有決定意義的方法是使用console.log(page.content);記錄加載的內容的來源,然後使用它來查看出現了什麼問題。 (只需將該源文件複製到'test.html'文件中並在瀏覽器中查看,請記住(offcourse)鏈接將被打破)

+0

您的意思是將它們從網站中刪除或以某種方式將其從光柵化文件中刪除? – BP09 2014-09-22 15:27:48

+0

將其從網站中移除以進行測試。你也可以使用javascript ofc。類似於「page.evaluate(function(){jQuery(」link「)。each(function(i,v){jQuery(v).attr(」media「,」all「); }); });'可以被評估。在我的情況下,這有幫助,但你可以'刪除()'或其他東西。 (雖然評論的東西出來測試是prolly最快如果你有訪問) – user1515791 2014-09-22 18:45:01

+0

啊,好吧。我不幸有權修改網站。所以聽起來可能我被卡住了。 – BP09 2014-09-22 21:20:43

相關問題