用php连接多个html文件,php – 如何使用Dompdf转换多个html文件?

我在做什么:

我正在使用名为Dompdf的PHP库将我的HTML文件转换为PDF.

我已成功将单个HTML文件转换为PDF.

我想做什么:

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

我在做什么:

我在这里有一个例子,我从数据库中获取一个表单,另一个直接从视图中获取表单.

码:

$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合并行为

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

如果合并< body>内的元素元素然后创建单个页面.

如果你追加多个< html>文件接连不断(如Simo所建议的),唯一的第一个文件被放入PDF中.

我添加了两个PHP示例:

>第一个展示了如何将两个HTML文档合并为一个DOMPDF呈现为一个页面的正文(PDF)

>第二个显示如何将它们合并到两个< 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');

Document 1

Document 1

Paragraph 1.1

Paragraph 1.2

Document 2

Paragraph 2.1

Paragraph 2.2

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输出:

Document 1

Document 1

Paragraph 1.1

Paragraph 1.2

Document 2

Document 2

Paragraph 2.1

Paragraph 2.2

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

标签:php,pdf,codeigniter,dompdf

来源: https://codeday.me/bug/20190830/1766652.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值