图像显示为HTML但没有显示DOMPDF()的图像

时间:2014-03-17 08:21:49

标签: php drupal-6 dompdf

我尝试按如下方式显示图像:

function part_profile_record_pdf_form()
{
    $sql = "SELECT * FROM part_profile WHERE part_id=" . arg(2);
    $query = db_query($sql);
    $dataFormDb = db_fetch_object($query);

    $url = '../../../' . $dataFormDb->image;

    $css_file = drupal_get_path('module', 'part_profile') . '/css/part_profile_pdf.css';
    $output = "<style>" . file_get_contents($css_file) . "</style>";
    $output .= "<html><body ><div id=\"wrapper\">";
    $output.= '<img height="156" width="128" id="img_profile" src="'.$url.'">';
    $output.="</div></body></html>";
    return $output;
}

我可以通过以下功能看到图像:

    function part_profile_make_pdf() {
      $css_file = drupal_get_path('module', 'part_profile') . '/css/part_profile_pdf.css';
       $output= part_profile_record_pdf_form();
     print $output;  
    }

但是当我尝试按照以下方式制作pdf时,没有显示图像给出'x'和'图像不可读或空':

function part_profile_make_pdf() {
  $css_file = drupal_get_path('module', 'part_profile') . '/css/part_profile_pdf.css';
   $output= part_profile_record_pdf_form();
// print $output;    
    require_once(realpath(".") . "/sites/all/libraries/dompdf/dompdf_config.inc.php");
    spl_autoload_register('DOMPDF_autoload');

    if (isset($_SESSION['indv_report_file_name']) && !empty($_SESSION['indv_report_file_name'])) {
        $filename = $_SESSION['indv_report_file_name'];
    } else {
        $rand_val = rand(0, 1000);
        $filename = "eureka_" . $rand_val . ".pdf";
        $_SESSION['indv_report_file_name'] = $filename;
    }
    $dompdf = new DOMPDF();
    $dompdf->load_html($output);
    // $dompdf->set_paper(DEFAULT_PDF_PAPER_SIZE, 'a4');
    // "a4" => array(0,0,595.28,841.89),
    $dompdf->set_paper(array(0, 0, 595.28, 420), "portrait"); // 12" x 12"
    $dompdf->render();
    $dompdf->stream("participant-profile.pdf", array("Attachment" => false));
    exit(0); 
}

我已在配置dompdf_config.inc.php中将DOMPDF_ENABLE_REMOTE设置为true。有任何想法。提前致谢。

1 个答案:

答案 0 :(得分:2)

在我自己的DOMPDF环境中进行一些测试后,我认为这将是由于图像的相对路径。目前您正在使用

$url = '../../../' . $dataFormDb->image;

HTML中的预览效果很好,浏览器可以找到图像。

但是当DOMPDF尝试处理HTML并找到图像时,它从系统的角度来看是这样的,就像PHP一样file_exists()。所以你需要添加完整路径:

$url = $_SERVER['DOCUMENT_ROOT'] . '/path/to/dir/' . $dataFormDb->image;

或只是硬编码

$url = '/home/username/sitename/public_html/images/' . $dataFormDb->image;

所以你可能需要一些逻辑来说:我在做预览吗?然后使用相对路径。或者我在做PDF渲染?然后使用完整路径。但我会把它留给你!