如何更改 DOMPDF_ENABLE_PHP

How to change the DOMPDF_ENABLE_PHP

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

抱歉,如果这是一个愚蠢的问题;我还是菜鸟

这是我的 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.7.0 开始,Dompdf 不再使用配置常量。要更改配置,您可以在实例化对象时传入一个选项:

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

或在实例上设置值:

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

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

'isPhpEnabled' 选项 仅启用对嵌入式 PHP 的支持,即 PHP 代码在 <script type="text/php"></script> 中。嵌入式 PHP 无法修改文档的结构,除非您使用它直接与 canvas 对象或 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));
?>

我试过用这种方式制作收据。但是,如果 php 网页在 url 中包含一些唯一 ID(例如 receipt.php?uid=1),则无法使用 ob_get_clean() 将其转换为 pdf .与转换不同的 php 页面相比,我发现直接在此页面中创建收据更容易。

可以直接在loadHtml里面写。但是命令和函数要分开写。

可以这样写- "客户的名字是".$row['name']