(内联)PHP 在 domPDF 7.0 中

(Inline) PHP in domPDF 7.0

我从 TCPDF 切换到 domPDF,因为在创建从 html 到 pdf 的发票时处理起来似乎更方便(我在 PHP 方面相当低级专业人士 :))。现在我将 html 文件创建为 PDF 文件,我认识到它不会在 PDF 中输出任何 PHP - 因为来自我的 sql 数据库的数据应该填充 PDF 它有点像问题。

我看到您可以在 src 文件夹中包含的 options.php 中启用 PHP,我尝试按照手册中的说明进行操作(并且还尝试了各种其他代码行)但它就是不想工作:

$root = realpath($_SERVER["DOCUMENT_ROOT"]);

require_once ("$root/../xxx/dompdf/autoload.inc.php");

use Dompdf\Dompdf;
use Dompdf\Options;

$options = new Options();
$options->setIsPhpEnabled('true');
$dompdf = new Dompdf($options);

$dompdf->loadHtml(file_get_contents("testdomhtml.php"));

$dompdf->setPaper('A4', 'portrait');

$dompdf->render();

$dompdf->stream("bla",array("Attachment"=>0));

PDF 已显示,但没有任何 PHP 代码的输入。

如果有人这么好心,我也很想知道启用 PHP 是一种安全风险的原因和程度,因为我实际上想将其用于我的业务。在不加载外部 html 和 css 文件的情况下将其全部包装在主 php 文件中是否更明智?

非常感谢!

您的 file_get_contents("testdomhtml.php") 将获取文件的实际内容,并且不会执行其中的任何代码。取而代之的是让它可以通过网络访问并将 URL 传递给此页面:

$dompdf->load_html_file('http://yourdomain.ext/testdomhtml.php');

您可以这样做(未测试代码)。替换

$dompdf->loadHtml(file_get_contents("testdomhtml.php"));

ob_start();
include 'testdomhtml.php';
$output = ob_get_clean();
$dompdf->loadHtml($output);

更多选项How to execute and get content of a .php file in a variable?