【发布时间】:2015-10-02 06:40:46
【问题描述】:
我无法将 pdf 输出到网络。 布局是左侧的一个选择,具有不同的 pdf 文件名,当用户选择一个时,它通过 ajax 调用显示在右侧。 我的 pdf 文件位于无法使用 URL 的网络文件夹中,所以我所做的是通过 php 阅读它
$file = 'C:/Cargos/data.pdf' // trying it out first with filesystem
header('Content-type: application/pdf');
header("Content-Disposition: inline; filename=doc.pdf")
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
readfile($file);
问题是这个输出有点垃圾,这是pdf的二进制原始数据,我还没有找到加载它的方法,这是ajax调用的响应:
/Creator (Canon iR-ADV C5235 PDF) /创建日期 (D:20150928152404+02'00') /生产者 (\376\377\000A\000d\000o\000b\000e\000 \000P\000S\000L\000 \0001\000.\000\ 2\000e\000 \000f\000o\000r\000 \000C\000a\000n\000o\000n\000\000) x� \TU�8~���Lдt2C��W)njH�8�I�2����)���}͌�l�Q�
它一直在继续,我只是在这里剪掉它。
如果我将 pdf 移动到一个具有固定名称的临时文件夹并重新加载始终指向该 URL 的 iframe,我已经成功了,但我觉得这是一个非常糟糕的解决方案。
对读取这个二进制输入并显示它有什么帮助吗?谢谢。
【问题讨论】:
-
你试过删除
header('Content-Transfer-Encoding: binary');吗? -
是的,我试过了,输出还是一样,我猜应该是这样的,但是没有办法显示为pdf
-
不能将 pdf 文件复制到网络服务器文件夹并提供 ajax 的直接链接?
-
将pdf复制到临时文件夹并重新加载iframe确实有效,但是每次用户从执行操作的列表中选择一个pdf时,即使它有效,我认为这是一个糟糕的解决方案,增加了很多开销/负载/处理。