在WordPress项目中,我使用mPDF生成pdf并通过Mandrill将其作为附件发送。唯一的问题是图像不是用pdf显示而是显示红叉的方框。但它在localhost中运行得非常好。 代码:
ggplot(aggdata[aggdata$action == "D",], aes(gear, length)) +
geom_boxplot() + xlab('Gear') + ylab('Size (cm)') +
ggtitle("Discard Characterization") +
theme(plot.title = element_text(hjust = 0.5))
邮件发送:
$html = create_html($quote);
function create_html($quote = NULL) {
$logo = get_field( 'logo', 'option' );
$image = get_field( 'image', 'option' );
$title = get_field( 'title', 'option' );
$sub_title = get_field( 'sub_title', 'option' );
$content_image = get_field( 'content_image', 'option' );
$content = get_field( 'content', 'option' );
$html = '<!DOCTYPE html><html>';
$html .= '<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>';
$html .= '<style>
body {
font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;
font-size14px;
line-height:1.5;
font-weight: normal;
}
.container {
max-width: 690px;
margin: 0 auto;
}
figure{
padding:0;
}
.mailContent {
float: left;
width: 100%;
}
.top-mail.centerAlign {
padding-top: 30px;
padding-bottom: 20px;
float: left;
width: 100%;
}
.mid-mail.centerAlign {
padding-top: 20px;
padding-bottom: 10px;
float: left;
width: 100%;
}
figure.mail-fig {
padding-bottom: 20px;
float: left;
width: 100%;
}
.mailContent h1 {
color:#4A5467;
font-size: 85px;
padding-top: 20px;
padding-bottom: 30px;
float: left;
width: 100%;
font-weight: normal;
font-family: "CycloneBackground";
}
.mailContent .highlight-text {
padding-bottom: 30px;
max-width: 650px;
margin: 0 auto;
font-size: 22px;
line-height: 1.5;
}
.bot-mail {
border-top: 1px solid #eee;
// margin-top: 10px;
padding-top: 40px;
padding-bottom: 50px;
float: left;
width: 100%;
}
.blue-logo{
margin-right: 80px;
}
.bot-mail p, .top-mail-text p{
font-size: 16px;
overflow: hidden;
}
.wrapper690, .wrapper400{
max-width: 690px;
margin: 0 auto;
}
.wrapper400{
max-width: 400px;
}
img.db-comma {
padding-top: 10px;
padding-bottom: 12px;
}
.mailContent2 .top-mail.centerAlign {
padding-bottom: 30px;
}
.centerAlign{
text-align: center;
}
.fLeft{
float:left;
}
</style>';
$html .= '</head>';
$html .= '<body>';
$html .= '<div class="container"><div class="row"><div class="col-sm-12">';
if(!empty($quote)) {
$html .= '<div class="mailContent wrapper690 mailContent2">';
$html .= '<div class="top-mail centerAlign">';
$html .= '<img src="'.$logo.'" alt="" class="fLeft">';
$html .= '<div class="wrapper400 fRight top-mail-text">';
$html .= '<img src="'.get_stylesheet_directory_uri().'/assets/images/db-comma.PNG" alt="double comma" class="db-comma">';
$html .= $quote;
$html .= '</div>';
$html .= '</div>';
} else {
$html .= '<div class="mailContent wrapper690">';
$html .= '<div class="top-mail centerAlign"><img src="'.$logo.'" alt=""></div>';
}
$html .= '<div class="mid-mail centerAlign">';
$html .= '<figure class="mail-fig"><img src="'.$image.'" alt=" group"></figure>';
if(!empty($title)) {
// $html .= '<h1>'.$title.'</h1>';
$html .= '<h1>test</h1>';
}
if(!empty($sub_title)) {
$html .= '<p class="highlight-text">'.$sub_title.'</p>';
}
$html .= '</div>';
$html .= '<div class="bot-mail">';
if(!empty($content_image)) {
$html .= '<img src="'.$content_image.'" alt=" logo blue" class="fLeft blue-logo">';
}
if(!empty($content)) {
$html .= $content;
}
$html .= '</div>';
$html .= '</div>';
$html .= '</div></div></div>';
$html .= '</body>';
$html .= '</html>';
return $html;
}
$mpdf = new mPDF();
$mpdf->SetDisplayMode('real');
$html = mb_convert_encoding($html, 'UTF-8', 'UTF-8');
$mpdf->WriteHTML($html);
ob_clean();
$path_certificate = ABSPATH."certificates/";
$certificate_filename = 'Gåvobevis_'.$_SESSION['first_name'].'_'.$_SESSION['last_name'].'_'.uniqid();
$certificate_filename = $certificate_filename.'.pdf';
$mpdf->Output($path_certificate.$certificate_filename, 'F');
我从admin获取图片作为自定义选项。图片网址为:http://xxx.xx.x.xxx/projectname/wp-content/uploads/2017/08/e-img1.png 欢迎任何帮助/建议。提前谢谢。
答案 0 :(得分:0)
对我来说,问题是某些mPDF文件夹中的权限错误。 确保您为以下文件夹设置了写权限:
/ttfontdata/
/tmp/
/graph_cache/
https://mpdf.github.io/installation-setup/installation-v6-x.html 希望这会有所帮助。
答案 1 :(得分:0)
是本地的图像链接http://xxx.xx.x.xxx/projectname/wp-content/uploads/2017/08/e-img1.png ...表示同一台服务器运行mpdf。如果是这样,可能无法访问该路径。尝试使用图像中的内部路径,实际上wordpress可能会对其根的相对路径感到满意; (例如/wp-content/uploads/2017/08/e-img1.png)
如果这不是问题,则可能是您的实时服务器缺少用于渲染的图形库,此处已对此进行了讨论; mPDF 5.7.1 - image displays as a broken [x]
答案 2 :(得分:0)
对我来说,唯一可行的解决方案是使用服务器上的相对路径:
/var/www/www.domain.com/myimg.jpg