【发布时间】:2018-08-16 13:23:08
【问题描述】:
我使用SVG 数据创建了一个PDF。
try{
$mpdf = new mPDF;
$final_html = '<div>';
//$raw_images contains the SVG Path
foreach($raw_images as $rimage){
$final_html .= "<img src='".$rimage."' width='100%'><br/><br/>";
}
$file_name = uniqid($prefix).".pdf";
$final_html .= '</div>';
$mpdf->WriteHTML($final_html);
$mpdf->Output($folder_name.$file_name, 'F');
} catch (ImagickException $ex) {
echo $ex->getMessage();
}
现在生成的 PDF 看起来像这样 View PDF
如果您检查 SVG 数据,它包含一张带有 SVG.like <image id="qr_code" xlink:href="data:image/svg+xml... 的图像。所以 SVG 数据中有一个 svg 图像(意味着 svg 中的一种 svg)。
SVG 图像可以正常工作,这意味着您可以查看输出(即 QR 码可见)。但是生成的 PDF 不显示 QR 码(可能是因为 QR 码图像是 SVG)。
那么如何解决这个问题,让二维码在 PDF 中可见?
【问题讨论】:
-
...或者因为您使用嵌入在 PDF 中的 SVG 中的 BASE64 编码 SVG!?为什么会这样?摆脱多余的复杂性并再次测试。 (顺便说一句,SVG 可以转换为 EPS,这是嵌入 PDF 中的矢量图形的默认格式。)
-
实际上,我正在制作名片,它需要有二维码。因此,如果我为 QR 码渲染 PNG 文件,则卡片的那部分不再是矢量。所以这就是为什么我在卡片 svg 中添加了 QR 码 svg。
-
你不应该渲染SVG,你应该尽量避免嵌套,首先是base64编码数据形式的嵌套。我不知道 PDF 是怎么做的。这只是一个猜测。