Как я могу сохранить jsPDF с изображениями на сервере?

1

Я использую 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);
  • 0
    возможный дубликат jsPDF не работает с изображениями
  • 0
    Возможно, но мы не можем сказать, не видя, как создается PDF и как он «поврежден»
Показать ещё 1 комментарий
Теги:
base64
pdf
jspdf

3 ответа

0

Я закодирован на base64 в java-скрипте, а затем декодировал его на сервере, он работал для меня. Вот мой фрагмент кода: Javascript: data: {pdfContent: btoa (pdfContent)}

PHP: $ pdfContent = base64_decode ($this-> request-> data ['pdfContent']);

0

У меня такая же проблема, и я думаю, что проблема связана с строковым кодированием во время публикации.

если вы используете скрипт ajax для передачи данных (например, это)

            $.ajax({
                url: 'upload.php',
                type: 'POST',
                data: {
                    'data_pdf': pdf
                },
            })

вы все равно сможете сохранить файл в формате pdf, но нет следа изображения (изображений), и я думаю, что проблема связана с кодировкой во время POST.

Надеюсь, кто-то может нам помочь.

  • 1
    Это не ответ, чтобы решить проблему.
  • 0
    Я знаю это, но это шаг, чтобы сделать это. Если бы мы могли понять, как избежать кодировки строки, переданной в скрипт php.
0

Похоже, вы должны подождать, пока все изображения не будут загружены. Столкнувшись с аналогичной проблемой с другим сценарием JS, который генерирует PDF, и решение заключалось в том, чтобы добавить теги img с одинаковыми изображениями в HTML, чтобы рабочий процесс был таким:

  • пользователь загружает страницу
  • изображения загружаются в скрытый div:
<!-- 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 -->
  • javascript, который помещается ниже div "pdfreportimages", выполняется тогда и генерирует PDF файл

Ещё вопросы

Сообщество Overcoder
Наверх
Меню