gpt4 book ai didi

php - Dompdf 将 Canvas 转换为 pdf

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:49:34 24 4
gpt4 key购买 nike

我正在尝试使用充满 Canvas 元素的 Dompdf 打印 PDF。

我可以毫无问题地包含和打印 png 图像,但是当尝试包含 Canvas 然后将其转换为 png 时,它不会在导出的 PDF 中显示它(没有损坏的图像等)。

要做什么?

这是一个 Codeigniter 项目:

使用 Dompdf 在 Controller 中加载 View :

$this->load->library('pdf');
$this->pdf->load_view('print_pdf', $data);
$this->pdf->render();
$this->pdf->stream("new_pdf_file.pdf");

要打印的 View :

<!doctype and so on..>

<canvas id="myCanvas" width="578" height="200"></canvas>

<script>
context.beginPath();
context.moveTo(170, 80);
context.bezierCurveTo(130, 100, 130, 150, 230, 150);
context.closePath();
context.lineWidth = 5;
context.fillStyle = '#8ED6FF';
context.fill();
context.strokeStyle = '#0000ff';
context.stroke();

var canvas = document.getElementById("myCanvas");
var img = canvas.toDataURL("image/png");

$(document).ready(function() {
$('<img />', {
src: img
});
img.appendTo($('#testDiv'));
});
</script>

<div id="testDiv">

</div>

<../html>

最佳答案

DomPDF is a HTML to DOM to PDF解析器不是一个完整的网络浏览器。

事情注定不会总是按预期进行,渲染可能会有所不同。

如果 Canvas 像您提供的示例一样简单,则无需使用 javascript 制作它 - 只需将其另存为 png 并包含在 <img src=""/> 中即可。

如果 Canvas 上生成的图片比较复杂,依赖$data传递给 View - 可能是这种情况 - 然后你仍然可以选择使用 PHP 生成 SVG(查看内联 PHP 或在 Controller 中并使用 $data 传递)。

如果 SVG 不是一个选项,那么您可以使用 PHP GD(或其他库)生成图像并将其保存在临时位置(并将文件包含在 src="path/to/file.png" 中)或将图像转换为数据 URI 并嵌入它在 View 中。

就个人而言,根据经验,我不会在 View 中使用比简单的 CSS 和旧的纯 HTML 更复杂的东西

关于php - Dompdf 将 Canvas 转换为 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35433005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com