使用html2pdf将动态HTML转换为PDF

时间:2013-12-27 21:59:41

标签: php html pdf html2pdf

我要转换的页面是通过PHP从MySQL数据库动态生成的。换句话说,页面上的信息取决于所选对象的Id。所以我通常会有这样的网址

renal_prescRequest_review.php?id=4

我正在使用html2pdf,到目前为止,我无法执行转换。当我像这样直接传递id=2

// get the HTML
ob_start();
include("renal_clinicalTrial_review.php?id=2");
$content = ob_get_clean();`

我收到这些错误:

  

警告:include(renal_prescRequest_review.php?id = 2)[function.include   ]:无法打开流:没有这样的文件或目录   在/ home / renalmed /的public_html /测试/测试/ renal_prescRequest_pdf.php   在第5行

     

警告:include(renal_prescRequest_review.php?id = 2)   [function.include]:无法打开流:没有这样的文件或目录   在/home/renalmed/public_html/testing/test/renal_prescRequest_pdf.php   在第5行

     

警告:include()[function.include]:打开失败   'renal_prescRequest_review.php?id = 2'表示   夹杂物(包含路径= ':/ usr / lib中/ PHP:在/ usr /本地/ LIB / PHP')   在/ home / renalme / public_html / testing / test / renal_prescRequest_pdf.php上   LINE5。

令人着迷的是,这些错误会抛出到应该显示实际HTML的PDF文档中。我已经有很长一段时间了。请帮忙。

5 个答案:

答案 0 :(得分:2)

您不能在包含文件中包含查询字符串。

对此的一个解决方案是将renal_prescRequest_review.php的代码传输到要将html转换为pdf的文件中。

以下是示例代码。

<?php
/**
 * HTML2PDF Librairy - example
 *
 * HTML => PDF convertor
 * distributed under the LGPL License
 *
 * @author      Laurent MINGUET <webmaster@html2pdf.fr>
 *
 * isset($_GET['vuehtml']) is not mandatory
 * it allow to display the result in the HTML format
 */
// get the HTML
ob_start();
// database connection here
require_once ( 'database-connection.php' );
// get the id
$id = $_GET['id'];
// Retrieve record from database
// query code here
?>
<page backleft="0mm" backtop="0mm" backright="0mm" backbottom="0mm">    
    ID: <?php echo $id;?>
    <!--other html and php codes here.-->
</page>
<?php
$content = ob_get_clean();
// convert to PDF
require_once('../html2pdf/html2pdf.class.php');
try
{
    $html2pdf = new HTML2PDF('P', array(200,300), 'en', true, 'UTF-8', array(0, 0, 0, 0));
    //$html2pdf = new HTML2PDF('P', 'A4', 'fr', true, 'UTF-8', 0);
    $html2pdf->pdf->SetDisplayMode('fullpage');
    $html2pdf->writeHTML($content);
    //$html2pdf->Output('test.pdf','D'); // force download pdf
    $html2pdf->Output('test.pdf'); // display only
}
catch(HTML2PDF_exception $e) {
    echo $e;
    exit;
}

答案 1 :(得分:1)

我不确定你可以在include中使用get变量。使用带有file_get_contents函数的URL。或者删除get变量id并在include之前分配它,在包含的脚本中使用isset检测它。

答案 2 :(得分:0)

Warning: include(renal_prescRequest_review.php?id=2)

您不能包含此类文件。您在include语句中指定了一个查询字符串,其中PHP只是期望一个路径。所以PHP期望找到一个名为renal_prescRequest_review.php?id=2的文件(换句话说,它不是在寻找renal_prescRequest_review.php)。您的PHP应该看起来像

include('renal_prescRequest_review.php');

答案 3 :(得分:0)

您可以对此使用会话并删除包含文件

上的查询字符串
session_start();
// get the HTML
ob_start();
$_SESSION['id'] = 2;
include("renal_clinicalTrial_review.php");
$content = ob_get_clean();

在renal_clinicalTrial_review.php中,输入session_start(); 你现在可以使用会议了。

答案 4 :(得分:0)

您不能包含这样的文件:

include("renal_clinicalTrial_review.php?id=2");

你应该这样做:

include("renal_clinicalTrial_review.php");

然后将参数传递给调用页面。

例如,如果您的代码保存为test.php,请按以下方式调用:

test.php?id=2