如何延迟pdf扫描,直到页面加载完全pdfcrowd api在PHP?

时间:2015-05-28 06:06:40

标签: javascript php jquery api pdf

我正在使用 pdfcrowd API从我的动态PHP网页生成PDF,其中我从数据库获取一些数据,并运行一些jQuery函数,setTimeout函数有2到3在jQuery的文档就绪函数内页面底部的秒延迟。

这个jQuery函数用于根据使用Lightweight Responsive jQuery - Waterfall plugin的内容动态设置页面布局高度,这需要一些时间来完成。

因此,当我尝试下载PDF时,它会在不运行我的JavaScript / jQuery函数的情况下下载页面,该函数会延迟大约2到3秒。

我正在使用的代码详细信息:

MyWebPage代码看起来像这样:

//HTML + PHP code here at top of page

//jQuery code to set page height dynamically

function setContainerHeight(containerDiv) {
 //function code here..
}
$(document).ready(function() {
    setTimeout(
        function() {
            $(containerDiv).waterfall({gridWidth:[0,500,1000,1500,2000],gap:10});
            setTimeout(function() {setContainerHeight(containerDiv);},2000);
        },1000
    );
});

下载页面

$client->setPageLayout(Pdfcrowd::CONTINUOUS); 
$pdf = $client->convertURI($myWebPageUrl);

// Set HTTP response headers
header("Content-Type: application/pdf");
header("Cache-Control: no-cache");
header("Accept-Ranges: none");
header("Content-Disposition: attachment; filename=\"Resume.pdf\"");
// send the generated PDF 
echo $pdf;

请帮助我,我可以延迟PDF扫描,直到我的页面完全加载。

提前致谢。

2 个答案:

答案 0 :(得分:3)

由于您无法保持要呈现的网页,因为您的JavaScript功能在页面加载后正在使用setTimeout运行,您应该只对页面加载执行任何操作。

所以,你应该在插件工作完成后尝试调用你的函数setContainerHeight(),这意味着你应该尝试回调插件的功能。

请记住在使用回调函数后删除setTimeout因为不需要它们。此外,如果你的插件没有回调,那么你应该介意从插件文件中调用你的函数,虽然这不是正确的方法,但它应该可以解决问题。

在您的情况下,您应该在sorting API中搜索名为waterfall的函数,并在最后一个函数中添加函数调用。

希望,这可以帮助你...... !!!

答案 1 :(得分:1)

您的问题并未澄清问题的真正原因,可能是javascript不知道PDF文件何时完全加载的问题,您可以通过ajax调用来调用它吗? 如果要将PDF加载到IFrame,可以试试这个:

$("#iFrameId").on("load", function () {
    $(containerDiv).waterfall({gridWidth:[0,500,1000,1500,2000],gap:10});
});

如果问题出在php中,可能是api减速的PDF输出可能会停止输出缓冲区,直到进程完成为止:

ob_start(); //at the begining
//Your code until echo
ob_end_flush(); //at the end