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

房东的猫 提交于 2019-12-24 13:44:14

问题


So my application generates pdf files using TCPDF, and that works fine. That is done inside php file, called with ajax. I'm using embed tag to preview them like:

$.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()');
   }
});

Because many users could generate my_file.pdf at the same time, there could be a case when one user will preview a file generated for another user. So my question at this point is how to force TCPDF to output directly into that tag, not using temp file

 Output('my_file','I')

not working here after ajax. There is an advice here to echo pdf directly back, but i don't know how to do that or is it possible at all. Anyway will try with success(data) to receive that like json.

Other workaround is to give session-bond file name for each user, but is using session_id() and appending to the file name is safe? Most probably I will end with generating UID for each session.

Any general advices are welcome.


回答1:


You should try passing what TCPDF will produce in a way widely used in embeding images: Data Uri Embedding Base64 Images This however might choke browser - i haven't test this.

I would rather save pdf file on server, print filename to browser or other ID of produced file so it could be read with "success" of the ajax request. Then calmly pass proper filename to Embed element. If you wish to do it more safely you can encode it using already used session-exclusive data like session cookie or data that is assosiated with that cookie on a server. You can bond pdf file access to IP that sent request to produce it and timestamp of request that caused production.



来源:https://stackoverflow.com/questions/17187706/preview-pdf-file-created-with-tcpdf-in-embed-tag-after-ajax-call

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!