我尝试按如下方式显示图像:
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。有任何想法。提前致谢。
答案 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渲染?然后使用完整路径。但我会把它留给你!