1

所以我的应用程序使用 TCPDF 生成 pdf 文件,效果很好。这是在 php 文件中完成的,用 ajax 调用。我正在使用嵌入标签来预览它们,例如:

$.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。

欢迎任何一般性建议。

4

1 回答 1

0

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

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

于 2013-07-15T13:47:54.457 回答