在Ajax调用之后预览使用TCPDF在embed标记中创建的pdf文件

时间:2013-06-19 09:29:51

标签: php tcpdf

所以我的应用程序使用TCPDF生成pdf文件,并且工作正常。这是在php文件中完成的,用ajax调用。我正在使用embed标签来预览它们:

$.ajax({
url: 'create_pdf_file.php',
success: function(){
    /* https://stackoverflow.com/questions/17083018/jquery-loads-cached-file-inside-ajax-success-function */
    $('#pdf_placeholder embed').attr('src','output/my_file.pdf?v=' + Math.random()');
   }
});

由于许多用户可以同时生成my_file.pdf,因此可能存在一个用户将预览为另一个用户生成的文件的情况。所以我现在的问题是如何强制TCPDF直接输出到该标签,而不是使用临时文件

 Output('my_file','I')

在ajax之后没有在这里工作。 这里有an advice直接回复pdf,但我不知道该怎么做或者根本不可能。无论如何,我会尝试使用success(data)接收json。

其他解决方法是为每个用户提供会话绑定文件名,但是使用session_id()并附加到文件名是否安全?最有可能的是,我将为每个会话生成UID。

欢迎任何一般性建议。

1 个答案:

答案 0 :(得分:0)

你应该尝试以一种广泛用于嵌入图像的方式传递TCPDF将产生的内容:Data Uri Embedding Base64 Images 然而,这可能会阻塞浏览器 - 我没有测试过这个。

我宁愿在服务器上保存pdf文件,将文件名打印到浏览器或生成的文件的其他ID,以便可以通过ajax请求的“成功”来读取它。然后平静地将正确的文件名传递给Embed元素。如果您希望更安全地执行此操作,则可以使用已使用的会话专用数据(如会话cookie)或与服务器上的cookie相关联的数据对其进行编码。您可以将pdf文件访问绑定到发送请求以生成它的IP以及导致生成的请求的时间戳。