2015-06-17 9 views
3

Я пытаюсь создать файл .pdf с строкой base64 из изображения, и я могу создать его правильно, но когда я пытаюсь открыть файл, программа отправляет сообщение, которое сообщает файл поврежден или что-то подобное ..Сгенерировать PDF из base64 String PHP

Я получил этот код:

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 декодируется строки. Спасибо вам всем!

EDIT:

Я пытаюсь этот код и получить тот же вопрос.

$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? Я думаю, нет, потому что, если я делаю fopen с .pdf, должен быть с этим форматом.

EDIT 2:

нашли решение.

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

Я следовал за этими шагами, и я могу получить, что, спасибо всем!

+0

Вы просто складываете файл «png» (изображение) и назовите его с расширением «.pdf». Это НЕ PDF. – Federico

+0

Тхо сделать PDF вам нужно больше "код" :) посмотреть на этот пост [как создать PDF-файл с PHP] [1] [1]: http://stackoverflow.com/questions/ 2132015/best-way-to-create-a-pdf-with-php – Federico

+0

Я пытаюсь использовать эти pdf-решения, но мне придется заплатить, потому что количество созданных PDF-файлов ... –

ответ

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

?>