从 base64 字符串 PHP 生成 PDF

Posted

技术标签:

【中文标题】从 base64 字符串 PHP 生成 PDF【英文标题】:Generate PDF from base64 String PHP 【发布时间】:2015-06-17 07:52:49 【问题描述】:

我正在尝试从图像中创建一个带有 base64 字符串的 .pdf 文件,并且可以正确创建它,但是当我尝试打开文件时,程序会发送一条消息,告知文件已损坏或其他什么就这样..

我得到了这个代码:

define('UPLOAD_DIR', '../image/');
$img = $_POST['image'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$uniqueNumber = uniqid();
$namefile = $uniqueNumber.'.png';
$file = UPLOAD_DIR . $namefile;
$success = file_put_contents($file, $data);
$namefile = $uniqueNumber.'.pdf';
$file = UPLOAD_DIR . $namefile;
$success = file_put_contents($file, $data);

我可以正确打开 .png 文件,所以我认为 base64 解码字符串没有问题。谢谢大家!

编辑:

我正在尝试此代码并遇到同样的问题。

$data = base64_decode ($img);
//Write data back to pdf file
$pdf = fopen ('test.pdf','w');
fwrite ($pdf,$data);
//close output file
fclose ($pdf);
echo 'Done';

那是因为我用 .pdf 保存图像吗?我认为没有,因为如果我用 .pdf 进行 fopen 应该是那种格式。

编辑 2:

找到了解决方案。

http://www.fpdf.org/en/script/script45.php

我按照这些步骤进行操作,我可以做到,谢谢大家!

【问题讨论】:

您只需创建一个“png”(图像)文件并使用“.pdf”扩展名命名它。那不是pdf。 要制作 pdf,您需要更多“代码”:) 看看这篇文章 [如何使用 PHP 创建 pdf][1] [1]:***.com/questions/2132015/… 我正在尝试使用这些 pdf 解决方案,但我必须为创建的 PDF 数量付费.. 【参考方案1】:

查看 DOMPDF:https://github.com/dompdf/dompdf

您绝对可以使用 DOMPDF 创建带有图像标签的 PDF,其来源是 Base64 字符串。并将其呈现为 PDF。

<?php
require_once("dompdf_config.inc.php");

$img = $_POST['image'];
$html =
 '<html><body>'.
 '<img src="'.$img.
 '"></body></html>';

$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("sample.pdf");

?>

【讨论】:

以上是关于从 base64 字符串 PHP 生成 PDF的主要内容,如果未能解决你的问题,请参考以下文章

jspdf的使用,js 根据base64字符串生成pdf

使用 JavaScript 在客户端将 base64 字符串保存为 PDF

从 javascript 触发 base64 编码 PDF 的打印预览

在 Javascript 中将 PDF 转换为 Base64 编码的字符串

如何在javascript中将PDF文件转换为base64字符串

如何使用 PHP 从 base64 编码的数据/字符串创建图像并将其保存到网站文件夹