2017-09-01 73 views
0

我在将HTML转换为PDF时出现问题(使用Dompdf)0.8.0,我一直在寻找答案。我发现我需要将DOMPDF_ENABLE_PHP更改为true。我的问题是我不知道在哪里改变或如何改变。如何更改DOMPDF_ENABLE_PHP

对不起,如果这是一个愚蠢的问题;我仍然是一名新秀。

这里是我的PHP代码

<?php 

require __DIR__."/../vendor/autoload.php"; 

use Dompdf\Dompdf; 

//generate some PDFs! 
$dompdf = new DOMPDF(); //if you use namespaces you may use new \DOMPDF() 
$dompdf->loadHtml(file_get_contents("re1.php")); 
$dompdf->render(); 
$dompdf->stream("sample.pdf", array("Attachment"=>0)); 
?> 

我re1.php

<?php require '../db.php';?> 
<!DOCTYPE html> 
<html> 
<head> 
<title></title> 
<?php include '../templates/links.inc';?> 
</head> 
<body> 

<div class="container"> 
<?php 
    $countr=0;            
    $sline = explode(",", $_SESSION["hroomid"]); 
    foreach ($sline as $id) { 
    $result = $mysqli->query("SELECT r.*,rt.* FROM tbl_room r INNER JOIN 
tbl_roomtype rt ON r.`RoomTypeID` = rt.`RoomTypeID` WHERE RoomID = 
'$sline[$countr]'"); 
    $row = $result->fetch_assoc(); 
    echo $row['RoomNumber']; 
    $countr++; 
    } 
?> 
</div> 
</body> 
</html> 

上的PDF输出:

query("SELECT r.*,rt.* FROM tbl_room r INNER JOIN tbl_roomtype rt ON 
r.`RoomTypeID` = 
rt.`RoomTypeID` WHERE RoomID = '$sline[$countr]'"); $row = $result- 
>fetch_assoc(); echo 
$row['RoomNumber']; $countr++; } ?> 

回答

0

DOMPDF为0.7.0不再使用配置常量。要改变你要么传递一个选项的配置,当你实例化对象:

$dompdf = new Dompdf(array('isPhpEnabled' => true)); 

或设置实例值:

$dompdf->setOption('isPhpEnabled', true); 

但是,请注意,由于0.6.2 DOMPDF会出于安全原因,不再解析PHP文档。这意味着你不能按照你想要的方式做事。此更改是为了解决安全问题。

“isPhpEnabled”选项仅支持嵌入式PHP,即<script type="text/php"></script>中的PHP代码。嵌入式PHP无法修改文档的结构,除非您使用它直接与画布对象或PDF渲染库进行交互。而且Dompdf团队建议您尽可能避免启用此选项。

你仍然可以做你想做的,但你需要修改PDF生成PHP代码是类似以下内容:

<?php 

require __DIR__."/../vendor/autoload.php"; 

ob_start(); 
include "re1.php"; 
$html = ob_get_clean(); 
ob_end_clean(); 

use Dompdf\Dompdf; 

//generate some PDFs! 
$dompdf = new DOMPDF(); //if you use namespaces you may use new \DOMPDF() 
$dompdf->loadHtml($html); 
$dompdf->render(); 
$dompdf->stream("sample.pdf", array("Attachment"=>0)); 
?> 
+0

非常感谢先生...... –