使用PHP从HTML生成PDF

3

我已经使用以下代码生成了一个PDF文件。在下面的代码中,所有的HTML内容都保存在$html变量中,并使用mpdf库中的html进行处理。现在,在另一页中,我想要打印出那一页的内容,它实际上是由一个php脚本生成的。我该怎么做?是否有其他的函数可以直接将HTML页面的内容转换为PDF,而不使用包含所有HTML代码的变量呢?

<?php
    $html = '
    <h1><a name="top"></a>mPDF</h1>
    <h2>Basic HTML Example</h2>
    This file demonstrates most of the HTML elements.
    <h3>Heading 3</h3>
    <h4>Heading 4</h4>
    <h5>Heading 5</h5>
    <h6>Heading 6</h6>
    <p>P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>

    <hr />

    <div><img src="tiger.wmf" style="float:right;">DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </div>
    <div><img src="klematis.jpg" style="opacity: 0.5; float: left;" />DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </div>

    <blockquote>Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.</blockquote>

    <address>Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.</address>

    <pre>PRE: Cum sociis natoque penatibus et magnis dis parturient montes, 
    nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis 
    dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras 
    sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. 
    Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, 
    ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.</pre>
';
include("../mpdf.php");

$mpdf=new mPDF(); 

$mpdf->WriteHTML($html);
$mpdf->Output();
exit;
?>
2个回答

1

根据我的经验,你可以通过将所有代码放入变量中来执行它的操作,或者你可以这样做:

$mpdf->WriteHTML('html here line by line');

对于想要添加到PDF中的每一行。
来自HTML文件:
$sourceCode = file_get_contents("http://www.domain.com/path/to/page.html");

您的HTML代码将存储在$sourceCode中


这种方法可以,但是否有其他方法仅从当前加载的 HTML 页面生成 PDF? - user3549665
@user3549665 我修改了答案,抱歉造成困惑。你可以像上面那样将其加载到变量中,然后可以使用mPDF将其转换为PDF。 - Skewled
没问题,我不知道你在页面上添加了那么多额外数据会遇到什么问题,但我认为这应该是可行的。 - Skewled
还有一件事,如何包含来自本地主机的路径。我们需要提供完整路径或相对路径 file_get_contents('/somefile.php') 或 file_get_contents('/localhost/some folder/somefile.php'); - user3549665
实际上,我想要打印的页面包含 PHP 代码,该代码从数据库检索数据。当我尝试使用 file_get_contents 打印内容时,输出中会包含所有 PHP 标签和脚本。 - user3549665
显示剩余5条评论

1
使用这个。
<?php
require('MPDF.php');

$pdf = new MPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接