通过PHP下载PDF不会在移动设备上打开

时间:2015-07-07 01:00:35

标签: javascript php pdf mobile

从wkhtmltopdf生成一个在桌面上运行良好的PDF。 我有一个两步过程来生成文件然后下载文件。 生成的文件在我的移动设备上打开就好了(当我通过电子邮件发送时),但是使用PHP脚本,我无法在下载后打开。

换句话说,它不是PDF,它是导致问题的PHP下载。该文件使用适当的名称下载,但不会在移动设备中打开。

Galaxy S5 w / Chrome(最新版)。

下载以javascript:

开始
OnSurfaceTextureUpdated

以下是PHP脚本:

window.location = 'savePDF.php?file=' + filename + '&fileName=' + nameString;

编辑:<?php $file = $_GET['file']; header('Pragma: public',true); header('Expires: 0'); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-Type: application/octet-stream"); header('Content-Disposition: attachment; filename="'.$_GET['fileName'].'.pdf"'); header("Content-Transfer-Encoding: binary"); header('Content-Length: ' . filesize($file)); readfile($file); unlink($file); ?> 已添加到代码中以显示该方面。

1 个答案:

答案 0 :(得分:1)

想出来。感谢大家帮我调试(在没有开发工具的移动设备上,这很痛苦)。

unlink($file);之后readfile($file)因为某种原因在移动设备上(当它在下载之前询问我想要对文件做什么时)它是在删除临时文件之前阅读全部内容。相反,我补充说:

exec("php cleantmp.php $tmpfile > NUL &");

并创建了cleantmp.php:

<?php
if (php_sapi_name() == 'cli') {
    sleep(10);

    unlink($argv[1]);
}
?>

现在在后台运行并在10秒后删除临时文件。

再次感谢您的帮助CBroe