php - 从 base64 字符串 PHP 生成 PDF

标签 php pdf corrupt

我正在尝试使用图像中的 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

我按照这些步骤操作,我可以搞定,谢谢大家!

最佳答案

查看 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");

?>

关于php - 从 base64 字符串 PHP 生成 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30885478/

相关文章:

ios - 是否有一些关于 Swift 中的 PDF 解析的好文档?

python - 将 PDF 转换为图像的省时方法

Linux 海湾合作委员会 : How to write a quick function to corrupt the stack?

java - Apache FTPClient 上传 jar 文件最终被损坏

php - MySQL DateTime Format 用法示例?

php - 存储用作散列密码一部分的散列函数是不好的做法吗?

javascript - PDF 到可编辑文档

node.js - 使用 NodeJS 从 URL 下载 JPG 时图像损坏

php - MySQL 数据的不同表格单元格颜色

javascript - 如何获取整个 Laravel 语言(本地化)数据?