嘿伙计我试图使用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
谢谢^^
答案 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