使用带有angularjs的html2pdf

时间:2016-04-27 20:00:34

标签: angularjs html2pdf

嘿伙计我试图使用html2pdf生成pdf文件,但我无法成功使其工作,因为我得到了一个不可读的内容 基本上我所拥有的是一个生成pdf文件的简单php页面

$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;
};

用于控制器端的最后一部分,当用户提出生成时我调用我的服务并将数据绑定到它,然后在成功后将所有内容返回并将其写入新窗口的内容

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

谢谢^^

1 个答案:

答案 0 :(得分: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