繁体   English   中英

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

[英]Preview pdf file created with TCPDF in embed tag after Ajax call

所以我的应用程序使用TCPDF生成pdf文件,并且工作正常。 这是在用ajax调用的php文件中完成的。 我正在使用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之后无法在这里工作。 这里有一个建议可以直接将pdf回显,但是我不知道该怎么做,或者根本不可能。 无论如何都会尝试success(data)来接收像json这样的消息。

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

欢迎任何一般性建议。

您应该尝试传递将以广泛用于嵌入图像的方式生成的TCPDF:Data Uri 嵌入Base64图像但是,这可能会阻塞浏览器-我尚未对其进行测试。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM