【问题标题】:PHP Open PDF file in adobe readerPHP 在 adobe reader 中打开 PDF 文件
【发布时间】:2019-06-27 08:55:53
【问题描述】:

我有很多 PDF 文件保存在网络驱动器上。所有的 pdf 文件都链接到一个任务。我想在阅读器中打开它们,而不是下载或在 chrome 标签中打开。

我使用这个获得了正确的 PDF 文件和正确的任务:

echo "<b>Documenten: </b><br>"; 
    $documentenwo = "SELECT * FROM DOCUMENT INNER JOIN DOCUMENT_REF_WO ON DOCUMENT.ID = DOCUMENT_REF_WO.DOCUMENT_ID WHERE DOCUMENT_REF_WO.WORKORDER_BASE_ID='".$base."' AND DOCUMENT_REF_WO.WORKORDER_LOT_ID='".$lot."' AND DOCUMENT_REF_WO.WORKORDER_SPLIT_ID='".$split."' AND ID NOT LIKE '%.stp' AND ID NOT LIKE '%.dxf'";   
    $STH = $pdo->prepare($documentenwo);
    $STH->execute();
    while($row = $STH->fetch(PDO::FETCH_ASSOC)){ 
        $file_patch = $row["DOC_FILE_PATH"];
        if(!empty(trim($file_patch))){
            $file_patch = trim($file_patch);
            $file_patch = str_replace("M:", "file://local/data", $file_patch);
        }
        $id = $row["ID"];
        $path = $file_patch."/".$id;   
        echo "<p><a href=".$file_patch."/".$id." target='_blank'><i class='fa fa-download'></i> ".$row["ID"]."</a></p>";          
    }

当我打开一个 pdf 文件时,它将在 chrome pdf 查看器中打开。

我想在 adobe reader 中从它的原始位置打开它。不下载。只需从原始位置打开文件即可。

为什么?

当有人在其中1个文档中发表评论时,它将保存在其原始位置,以便其他人可以在pdf文件中看到他的评论。

【问题讨论】:

  • 这是用户必须在浏览器首选项中设置的首选项,您不能强制浏览器忽略用户的设置
  • @Sfili_81 没问题。我已经在用户计算机上尝试了一些东西,但到目前为止还没有结果。所有用户都使用谷歌浏览器
  • 您不能直接控制这些文件处理设置,因为这将是一个安全漏洞。相反,更好的 UX 选项是向用户提供分步指导,显示其浏览器的屏幕截图以及如何在 Adob​​e Reader 中下载和打开文件。
  • @NRohler 好吧。不是我期待的答案,但我必须接受它哈哈。谢谢!
  • "不下载。从原始位置打开文件。" ……这太荒谬了。为了查看计算机上的文件,必须从远程服务器复制文件内容并将其加载到计算机的内存中。因此,即使 PDF 最终显示在 Chrome 中的内联 PDF 查看器中,该文件也已下载。毕竟,Chrome 运行在哪台计算机上——服务器还是用户的计算机?如果用户然后选择永久保存文件,它只是从临时文件夹移动到他们选择的文件夹,不再下载。

标签: php html


【解决方案1】:

我在使用 Intranet php webapp 时遇到过同样的情况。用户不想在浏览器选项卡中查看来自网络服务器的 pdf,他们想直接在 Acrobat Pro 中对其进行编辑。 当然你有两个障碍,php 是基于服务器的,javascript 不允许在客户端机器上运行程序。 经过思考和思考,我找到了一种解决方法,ajax 将请求一个 php 脚本,该脚本将组成一个批处理文件,以文件(网络路径)作为参数打开 acrobat pro。因此,在发出危险文件类型的警告后,您下载 .cmd 并在执行时将在您想要的程序中打开该文件。 如果您想使用默认程序以外的其他程序,只需添加程序可执行文件的路径即可。 而且它是可自毁的,因此您的下载文件夹中不会有很多 .cmd。

文件名为 acrobat.php?filename=path_to_the_file(网络路径)

<?php 
extract($_REQUEST);
$filename = realpath($filename);
$filename = str_replace("D:\\Pdf_folder\\","\\\\Server_name\\Pdf_folder\\",$filename); //replace internal server path to network path
function acrobat($filename) {
   header("Content-type: text/plain");
header("Content-Disposition: attachment; filename=acrobat.cmd");
print $filename; //dowload file called acrobat.cmd
}
//call the function with the command to open pdf by default program.
 acrobat( "start \"\" \"$filename\" ".PHP_EOL." DEL \"%~f0\"");

【讨论】:

    猜你喜欢
    • 2018-05-10
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多