2017-04-04 57 views
1

我目前正在測試DOMPDF,並得到它工作相當不錯,包括CSS樣式,顯示從MySQL數據庫中提取的內容等。有沒有什麼方法可以使JavaScript在DOMPDF生成的PDF中工作?

現在我嘗試使用一些JavaScript,但它不起作用。我用於測試一個非常簡單的腳本:

HTML某個頁面上:

<div id='mydiv1' style='width: 100%;height:20px;background:#ddd;'></div> 

的JS(正上方收盤</body>標籤(但我也試了一下開<body>標記之後):

<script> 
    document.getElementById('mydiv1').innerHTML = 'this is a test'; 
</script> 

當我在瀏覽器(我呼應它包含了完整的HTML/PHP頁面變量)迴應此頁面,當我把同一個變量DOMPDF的loadHtml然後渲染和文字出現在DIV。輸出它,腳本生成的文本不會出現在PDF中(頁面的其餘部分)。

所以我的問題是:有什麼辦法讓JavaScript在DOMPDF生成的PDF工作?

+1

此回覆[執行PHP中的JavaScript(HTTP://計算器。 com/a/2699303/5217142)使用[HtmlUnit](http://htmlunit.sourceforge.net/)從網頁生成HTML,可能會引起您的興趣。 – traktor53

回答

1

不幸的是,DOMPDF不支持JavaScript。您可以考慮查看類似phantomjs的東西,它也可以是used to save pdf files

+0

感謝您的回答。但對我來說最重要的是PHP功能,也有通過MYSQL獲取內容的可能性,而且似乎用phantomjs做不到這一點。 – Johannes

+0

我剛剛在Github上的DOMPDF「Features」頁面看到了這一行:「內嵌PDF Javascript支持(腳本與PDF文檔API兼容)」。但我想這隻意味着可以直接寫入HTML標籤的JS東西,如果有的話(?) – Johannes

+1

如果我沒有弄錯,他們正在討論將JavaScript嵌入到PDF文件本身,儘管這是[僅支持由一些pdf觀衆](http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/js_api_reference.pdf) –

0

有一個DOMPDF選項打開內嵌的JavaScript:

$ isJavascriptEnabled = TRUE;

繼承人的如何使用DOMPDF選項的示例:

$HTML = <<<HTML 
!DOCTYPE html> 
<html> 
<head> 
<body> 
some html 
</body> 
<script> somejs </script> 
</head> 
</html> 
HTML; 

require_once "sites/all/libraries/dompdf/autoload.inc.php"; 
use Dompdf\Dompdf; 
use Dompdf\Options; 
$options = new Options(); 
$options->set('isJavascriptEnabled', TRUE); 
$dompdf = new Dompdf($options); 
$dompdf->load_html($HTML); 
$dompdf->setPaper('A4', 'portrait'); 
$dompdf->render(); 
$dompdf->stream('blah.pdf'); 

我把這個從DOMPDF的選項頁:https://github.com/dompdf/dompdf/blob/master/src/Options.php

+0

非常感謝您的回覆!不過,默認情況下,這個選項*是啓用/正確的,在我上面描述的測試情況下也是這樣,並且不起作用... – Johannes

相關問題