2017-04-04 185 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

相关问题