문제

I try to show image as follows:

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;
}

I can see the image by the following function:

    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;  
    }

But when I try to make pdf as follows , no image is shown giving 'x' and 'image not readable or empty':

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); 
}

I already set DOMPDF_ENABLE_REMOTE to true in my config dompdf_config.inc.php. have any idea. Thanks in advance.

도움이 되었습니까?

해결책

After a little testing in my own DOMPDF environment, I reckon this will be due to the relative path to your image. Currently you're using

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

Which is fine for the preview in HTML, the browser can find the image.

But when DOMPDF tries to process the HTML and find the image, it's doing so from a system perspective, like PHP would if you were doing a file_exists(). So you need to add the full path:

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

or just hardcode it

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

So you might need some logic to say: am I doing a preview? Then use relative path. Or am I doing a PDF render? Then use full path. But I'll leave that to you!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top