Я использую jsPDF для создания PDF на стороне клиента. Теперь у меня есть Картинки в моем PDF файле, и я хочу сохранить это на своем сервере.
Проблема в том, что без изображений нет проблем, но с изображениями сгенерированный PDF является коррумпированным.
Как я могу это решить?
Javascript:
var pdf = doc.output();
var data = new FormData();
data.append("data" , pdf);
var xhr = new XMLHttpRequest();
xhr.open( 'post', 'ajax/upload.php', true );
xhr.send(data);
PHP:
if(!empty($_POST['data'])){
$data = $_POST['data'];
$fname = "einsatz.pdf"; // name the file
$file = fopen("../data/" .$fname, 'w'); // open the file path
fwrite($file, $data); //save data
fclose($file);
echo "Einsatzblatt saved";
}
else {
echo "No Data Sent";
}
Спасибо за помощь!
ОБНОВЛЕНИЕ 05/29/2015
Изображение создается из карт google с помощью плагина blockpring. там я получаю base64 png.
blockspring.runParsed("b21fb2a7b862354a76a7806ae9fc0a4d", { "color": "#d52c11", "zoom_level": 16, "address": ""+ adresse + "" }, { "api_key": "br_3080_5cec24d3c19bdc66c763138a974e14311facf637" }, function(res){
var imgData = 'data:image/png;base64,' + res.params.maps.data;
Затем я создаю PDF файл
var doc = new jsPDF('landscape');
doc.addImage(imgData, 'png', 150, 45, 125, 125);
Я закодирован на base64 в java-скрипте, а затем декодировал его на сервере, он работал для меня. Вот мой фрагмент кода: Javascript: data: {pdfContent: btoa (pdfContent)}
PHP: $ pdfContent = base64_decode ($this-> request-> data ['pdfContent']);
У меня такая же проблема, и я думаю, что проблема связана с строковым кодированием во время публикации.
если вы используете скрипт ajax для передачи данных (например, это)
$.ajax({
url: 'upload.php',
type: 'POST',
data: {
'data_pdf': pdf
},
})
вы все равно сможете сохранить файл в формате pdf, но нет следа изображения (изображений), и я думаю, что проблема связана с кодировкой во время POST.
Надеюсь, кто-то может нам помочь.
Похоже, вы должны подождать, пока все изображения не будут загружены. Столкнувшись с аналогичной проблемой с другим сценарием JS, который генерирует PDF, и решение заключалось в том, чтобы добавить теги img с одинаковыми изображениями в HTML, чтобы рабочий процесс был таким:
<!-- hidden images for pdf generation - BEGIN -->
<div id="pdfreportimages" style="display: none;">
<!-- put images you plan to use in PDF below -->
<img src="pdfreportimages/logo.jpg" id="pdflogoimage">
</div>
<!-- hidden images for pdf generation - END -->