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

How to delay the pdf scan until page loads completely pdfcrowd api in php?

本文关键字:加载 pdfcrowd php api 何延迟 延迟 扫描 pdf      更新时间:2023-09-26

我使用pdfcrowd API从我的动态PHP网页生成PDF,其中我从DB获得一些数据,并且还运行一些jQuery函数与setTimeout函数在页面底部有2到3秒延迟在jQuery的文档准备功能。

这个jQuery函数我使用轻量级响应式jQuery -瀑布插件来动态设置页面布局高度,这需要一些时间来完成。

所以,当我尝试下载PDF时,它下载页面而不运行我的JavaScript/jQuery函数,这延迟了大约2到3秒。

我正在使用的代码细节:

我的网页代码看起来像这样:

//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扫描,直到我的页面完全加载。

既然你不能保持网页渲染,因为你的JavaScript函数在页面加载后运行,使用setTimeout,你应该做任何需要的页面加载。

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

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

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

希望这对你有帮助…!!

你的问题并没有澄清问题到底是什么,可能是javascript不知道何时PDF文件已完全加载的问题,你可以通过ajax调用调用它吗?如果你要将PDF加载到IFrame中,你可以这样做:

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

如果问题是在php中,可能是PDF的输出被api减慢了,你可以停止输出缓冲区,直到处理完成:

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