如何更改 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']
我在将 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']