我正在开发一个WordPress插件,我使用DOMPDF生成PDF。生成过程正常工作,但我遇到了一个问题,即生成的PDF中没有显示图像。
下面是我的实现的简要概述:
1.我检索了一系列的图像(Meta值)与WordPress中的帖子链接。
1.我构造了一个嵌入这些图像的HTML字符串。
1.我将这个HTML字符串传递给DOMPDF以生成PDF。
PDF正确生成,所有文本内容都完美显示。但是,图像丢失。我已经确保图像存在并且链接是正确的。
下面是我的PHP代码的相关片段:
function my_generate_pdf_callback() {
$response_data = array(
'success' => true,
'pdf_data' => '',
'image_data' => array(),
'html_content' => '',
'error_message' => ''
);
try {
require_once(plugin_dir_path(__FILE__) . 'dompdf/autoload.inc.php');
$post_id = isset($_POST['post_id']) ? intval(sanitize_text_field($_POST['post_id'])) : 0;
if ($post_id <= 0) {
throw new Exception('Nieprawidłowy post_id');
}
$post_title = get_the_title($post_id);
$post_date = get_the_date('Y-m-d', $post_id);
$meta_pictures = array();
for ($i = 1; $i <= 10; $i++) {
$meta_key = 'picture_' . $i;
$meta_value = get_post_meta($post_id, $meta_key, true);
if (!empty($meta_value)) {
$meta_pictures[] = $meta_value;
}
}
$html_content = "
<html>
<head>
<style>
body {
font-family: 'DejaVu Sans', sans-serif;
}
</style>
</head>
<body>
<h1>Tytuł posta: " . $post_title . "</h1>
<p>Data utworzenia: " . $post_date . "</p>";
foreach ($meta_pictures as $pic) {
$image_src = wp_get_attachment_url($pic);
if ($image_src) {
$html_content .= "<img src='" . $image_src . "' width='42' height='42'>";
$response_data['image_data'][] = $image_src;
}
}
$html_content .= "</body></html>";
$dompdf = new \Dompdf\Dompdf();
$options = $dompdf->getOptions();
$options->setIsRemoteEnabled(true);
$dompdf->setOptions($options);
$dompdf->loadHtml($html_content, 'UTF-8');
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();
$pdf_output = $dompdf->output();
$response_data['pdf_data'] = base64_encode($pdf_output);
$response_data['html_content'] = $html_content;
} catch (Exception $e) {
$response_data['success'] = false;
$response_data['error_message'] = 'Error: ' . $e->getMessage() . ' File ' . $e->getFile() . ' Line ' . $e->getLine();
}
$response = new WP_REST_Response($response_data);
$response->set_status(200);
wp_send_json($response);
}
add_action('wp_ajax_my_generate_pdf', 'my_generate_pdf_callback');
我尝试在WordPress环境中使用DOMPDF生成一个包含嵌入图像的PDF文档。鉴于图像存在且链接正确,我希望图像与文本内容一起显示在生成的PDF中。
然而,实际的结果是一个PDF文档,其中所有的文本内容显示完美,但图像完全丢失。为了解决这个问题,我使用JavaScript实现了一个预验证步骤,以确保所有图像链接在PDF生成之前都是可访问的,并且它们确实是有效的。尽管如此,图像仍然没有显示在最终的PDF中。
DomPDF版本:2-0-3
1条答案
按热度按时间slwdgvem1#
我设法解决了图像未显示在生成的PDF中的问题。解决方案是将图像作为base64数据URL直接嵌入到HTML内容中,然后将其传递给DOMPDF。下面是对我有用的更新后的代码片段: