gpt4 book ai didi

php - 如何使用 Dompdf 转换多个 html 文件?

转载 作者:可可西里 更新时间:2023-11-01 00:20:22 27 4
gpt4 key购买 nike

我在做什么:

我正在使用名为 Dompdf 的 PHP 库将我的 HTML 文件转换为 PDF。我已成功将单个 HTML 文件转换为 PDF。

我正在尝试做的事情:

现在我有多个报告,我想将它们转换成 PDF 文件。

我在做什么:

我这里有一个示例,其中我从数据库中获取一个表单,另一个直接从 View 中获取。

代码:

$result['patients'] = $this->reports_model->get_xray_reports($id); // getting form from database

require_once "dompdf/dompdf_config.inc.php"; // include dompdf
$dompdf = new DOMPDF();
$dompdf->set_paper("A4");
$html = $this->load->view('wilcare/form_set_page_15',"",true);// loading direct from view
//this file is not converting
$html = $this->load->view('wilcare/report1',$result,true);//loading from db

$dompdf->load_html($html)

$dompdf->render();
$dompdf->stream("hello.pdf",array('Attachment'=>0));

问题

它只转换一个文件。

我也试过这个:

  $html = $this->load->view('wilcare/form_set_page_15',"",true);
$html1 = $this->load->view('wilcare/report1',$result,true);

$dompdf->load_html($html && $html1);

最佳答案

您想使用 DOMPDF 从两个 HTML 文件创建 PDF 文件。

这是不可能的。 DOMPDF 支持从一个 HTML 文档创建一个 PDF 文件。

DOMPDF 在内部使用 DOMDocument 来表示 HTML 文档。因此,如果您想将两个 HTML 文件放入 DOMPDF,您必须先合并它们。

DOMPDF HTML 合并行为

测试确实表明您可以连接多个 <head>...</head><body>...</body>部分(这些对中的每一对都将在 DOMPDF 中开始一个新页面)但它们需要位于相同的 <html> 中文档元素(DOMPDF v0.6.1)。

如果在 <body> 中合并元素元素,然后创建单个页面。

如果附加多个 <html>一个接一个的文档(如 Simo 所建议的),只有第一个文档被放入 PDF。

我添加了两个 PHP 示例:

  1. 第一个展示了如何将两个 HTML 文档合并为一个主体,DOMPDF 将其呈现为一页 (PDF)
  2. 第二个显示如何将它们合并为两个 <head>...</head><body>...</body>其中 DOMPDF 呈现为两页 ( PDF )

PHP 示例代码 HTML 文档合并 DOMPDF 单体

例如您想要将第二个 HTML 文档的主体内容附加到第一个 HTML 文档主体的末尾(所有类型为 DOMDocument 的对象)。:

$doc1 = create_document(1);
$doc2 = create_document(2);

$doc1Body = $doc1->getElementsByTagName('body')->item(0);
$doc2Body = $doc2->getElementsByTagName('body')->item(0);
foreach ($doc2Body->childNodes as $child) {
$import = $doc1->importNode($child, true);
if ($import) {
$doc1Body->appendChild($import);
}
}
$doc1->saveHTMLFile('php://output');

示例性 HTML 输出 ( of this full Example Code ):

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Document 1</title>
</head>
<body>
<h1>Document 1</h1>
<p>Paragraph 1.1</p>
<p>Paragraph 1.2</p>
<h1>Document 2</h1>
<p>Paragraph 2.1</p>
<p>Paragraph 2.2</p>
</body>
</html>

创建此 PDF:http://tinyurl.com/nrv78br (一页)

PHP 示例代码 HTML 文档合并 DOMPDF 多页

这里是第二个 HTML 文档上的新页面示例:

foreach ($doc2->documentElement->childNodes as $child) {
$import = $doc1->importNode($child, true);
if ($import) {
$doc1->documentElement->appendChild($import);
}
}
$html = $doc1->saveHTML();

示例 HTML 输出:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Document 1</title></head><body>
<h1>Document 1</h1>
<p>Paragraph 1.1</p>
<p>Paragraph 1.2</p>
</body><head><title>Document 2</title></head><body>
<h1>Document 2</h1>
<p>Paragraph 2.1</p>
<p>Paragraph 2.2</p>
</body></html>

创建此 PDF:http://tinyurl.com/oe4odmy (两页)


根据您对文档的需求,您可能需要执行其他步骤,例如合并标题和 CSS 规则(希望它们是可移植的)。

关于php - 如何使用 Dompdf 转换多个 html 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27657525/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com