从base64 String PHP生成PDF

时间:2015-06-17 07:52:50

标签: 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

我按照这些步骤操作,我可以得到它,谢谢大家!

1 个答案:

答案 0 :(得分:0)

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

?>