首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TCPDF进度条

TCPDF进度条
EN

Stack Overflow用户
提问于 2014-02-14 20:23:47
回答 2查看 2K关注 0票数 1

我使用php和TCPDF从几个MySQL查询生成一个定制的PDF文件。一旦用户单击"Generate“按钮,就会打开一个新的选项卡,并启动PDF进程。平均而言,构建PDF大约需要10秒。一旦文件准备就绪,浏览器将关闭空白页并显示“另存为”对话框窗口。

我想在PDF创建时向用户显示某种类型的消息。谈到AJAX/JQUERY,我有点像个新手,但我尝试过实现几种解决方案,但都没有成功。

要注意的事情:

  1. 后端是Joomla!
  2. 使用$pdf->Output('example.pdf','D')生成pdf
  3. 在ob_end_clean之前使用$pdf-Output以避免"TCPDF: Data已经输出“错误。

我已经尝试过将一个<div>添加到页面末尾的方法,以及一些jQuery/CSS,它将在页面加载时显示一个动画gif。它不起作用,我觉得这是由ob_end_clean或Joomla造成的!框架。

EN

回答 2

Stack Overflow用户

发布于 2014-02-15 00:33:45

1)对于进度条,必须通过ajax运行脚本

2)您有pdf页count...on,每页创建一个可以更改进度条值的页面。

3)必须使用php输出控制函数,用于创建php的每个pdf页面,并为此提供一个良好的函数列表。

我没有看到你的代码,但你必须这样做

代码语言:javascript
运行
复制
$i = 1;
while($i< PDF_PAGE_COUNT){
        ob_start();
        pdf_create_page($i);
        echo $i/PDF_PAGE_COUNT;
        ob_flush();
        flush();
$i++;
}

如需更好的答案,请将您的代码粘贴在这里!

票数 2
EN

Stack Overflow用户

发布于 2015-05-04 22:07:01

代码语言:javascript
运行
复制
$(document).ready(function(){
 $("#PDF").click(function(){
		/*-------------- validate filters	-------------------------------*/
		if(!(validarFecha(fecha_ymd(rj.Get('#TxtFechaIni').value())))){Warn2.show();return false; }
		if(!(validarFecha(fecha_ymd(rj.Get('#TxtFechaFin').value())))){Warn3.show();return false; }	
		if(Date.parse(fecha_ymd(rj.Get('#TxtFechaIni').value()))>=Date.parse(fecha_ymd(rj.Get('#TxtFechaFin').value()))){Warn.show();return false; }
	/* is alll right */	
	else {		
				/* show a message while generating report*/
				WinSnd.Message({type:'info', title:'generating report', value:'Please, wait ...', buttons:' '}).show();	
				/* url with params to send */
				var url="report.php?&slash="+'<?php echo(isset($_POST['slash'])?@$_POST['slash']:@$_GET['slash']);?>'+"&module="+'<?php echo (isset($_POST['module'])?@$_POST['module']:@$_GET['module']);?>'
				+"&TxtCheck=excel"
				+"&TxtFechaIni="+rj.Get('#TxtFechaIni').value()
				+"&TxtFechaFin="+rj.Get('#TxtFechaFin').value()
				+"&LkpTdoc="+rj.Get('#LkpTdoc').value();

				var filename = <?php echo '"'.$gSave.'"';?>; /* name for report, i set*/
				var xhr = new XMLHttpRequest();
				xhr.responseType = 'blob';
				
				xhr.onload = function(){
						WinSnd.hide(); /* hide message */
						var a = document.createElement('a');
						a.href = window.URL.createObjectURL(xhr.response); // xhr.response es un blob file
						a.target = '_blank';
						a.download = filename; // file name 
						a.style.display = 'none';
						document.body.appendChild(a);
						a.click(); // action
						delete a; //
				};
				xhr.open('GET', url);
				xhr.send();	
						
		}// fin validaciones
			
    });//fin function	
});// fin 		

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21788888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档