2016-04-27 2 views
0

Эй, ребята, я пытаюсь сгенерировать pdf-файл с помощью html2pdf, но мне не удалось заставить его работать, потому что я получаю нечитаемый контент , так что в основном у меня есть простая php-страница, которая генерирует PDF файлИспользование html2pdf с angularjs

$content = ob_get_clean(); 

require_once(dirname(__FILE__).'/../vendor/autoload.php'); 
try 
{ 
    $html2pdf = new HTML2PDF('P', 'A4', 'fr', true, 'UTF-8', 0); 
    $html2pdf->writeHTML($content, isset($_GET['vuehtml'])); 
    $html2pdf->createIndex('Sommaire', 25, 12, false, true, 1); 
    $html2pdf->Output('bookmark.pdf'); 
} 
catch(HTML2PDF_exception $e) { 
    echo $e; 
    exit; 
} 

с другой стороны, у меня есть свой сервис, который он посылает некоторые данные в нем и получить файл обратно что-то вроде этого

this.generatePDF = function (commande) { 
    var deferred = $q.defer(); 
    $http({ 
     method: 'POST', 
     //responseType: 'arraybuffer', 
     url: 'vendor/modules/html2pdf/examples/bookmark.php', 
     timeout: 15000, 
     data: $.param({'data': commande}), 
     headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
     //headers: {'Content-Type': 'application/pdf'} 
     //header :{"Content-Disposition": "attachment; filename=sample.pdf"} 
    }).then(function successCallback(response) { 
     debugger; 
     deferred.resolve(response.data); 
    }, function errorCallback(response) { 
      deferred.resolve(response.statusText); 
    }); 
    return deferred.promise; 
}; 

для последней части, которая является стороной контроллера, когда user presse generate Я вызываю свою службу и привязываю к ней данные а затем получить весь материал обратно после успеха и записать его в содержание нового окна

var popup = $window.open('', 'TEST', 'width=500,height=900'); 

ServiceCommande.generatePDF($scope.commande).then(function (data) { 
    popup.document.write(data); 
}); 

вещь является получить какие-то странные вещи вместо PDF, что я посылаю strange behavior pdf format

Спасибо^^

+0

Это как PDF выглядит в тексте. Это не читаемый формат. Вы можете - для целей тестирования - взять странные вещи, сохранить их в файле с завершением * .pdf * и попытаться открыть его. Что вы хотите сделать с созданным pdf-файлом? Если вы хотите показать его во всплывающем окне, я думаю, вам нужно сначала сохранить его в формате pdf, а затем загрузить его в свой html. – kabaehr

+0

благодарю вас за быстрый ответ. Да, это именно то, что я хочу. Я уже сохраняю файл в формате pdf, поэтому вместо отправки всего текста в формате PDF мне просто нужно отправить текущее местоположение файла для открытия это так? –

ответ

0

Попробуйте использовать PhantomJS `. Он получил широкую поддержку элементов CSS.

Установите его и поместите исполняемый файл в системную среду PATH. Создать файл index.js. Содержание этого файла будет:

//create page 
var page= require('webpage').create(); 
var system = require('system'); 

page.paperSize = { 
    format: 'A4', 
    orientation: 'portrait' 
} 

//check for number of parameters 
if (system.args.length < 3) { 
    console.log('Usage: phantomjs index.js <web page URL> <ouptut path/filename>'); 
    phantom.exit(); 
} 

page.open(system.args[1], function (status) { 
    console.log("Status: " + status); 
    if (status === "success") { 
     page.render(system.args[2]); 
    } 
    else { 
     console.log("Failed") 
    } 
phantom.exit(); 
}); 

Теперь получать любую ссылку веб-страницы, он преобразует его в формат PDF, выдачи команд, как:

phantomjs index.js index.html index.pdf 
Смежные вопросы