通过PHP / Perl在用户浏览器中显示PDF文件
我想显示我的用户PDF文件。 我使用cgi来显示pdf的原因是我想跟踪pdf的点击次数,并掩盖保存的pdf的真实位置。
我一直在互联网上搜索,只发现如何向用户显示保存对话框并创建PDF,而不是向用户显示文件。
我想要的是向用户显示我的PDF文件, 而不是创建或下载 PDF文件。 这是我从官方的php文档中得到的:
<?php
header('Content-type: application/pdf');
readfile('the.pdf');
?>
另外我的谷歌搜索结果的Perl代码:
open(PDF, "the.pdf") or die "could not open PDF [$!]";
binmode PDF;
my $output = do { local $/; <PDF> };
close (PDF);
print "Content-Type: application/pdfn";
print "Content-Length: " .length($output) . "nn";
print $output
如果你是用红宝石做的话,请对我说。 但我不确定我的服务器是否支持导轨。
对不起,如果我的代码离显示pdf的方法太远,因为我不知道pdf处理以及如何实现这个问题。
让我们假设用户有Adobe Reader插件。 那么,如何解决我的问题?
编辑 :我想显示纯文本的PDF文件。 我的主要目的:跟踪我的PDF文件并使用一些奇特的URL。
编辑 :这是我的主要PHP代码:
<?php
$file='/files/the.pdf';
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="the.pdf"');
@readfile($file);
?>
编辑 :现在代码正在工作。 但加载进度条(在Adobe Reader X插件上)没有显示出来。 为什么? 任何人都可以帮助我? 这是我的主要代码:
<?php
$file='./files/the.pdf';
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="the.pdf"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
@readfile($file);
?>
编辑 :我所有的问题都解决了。 以下是最终的代码:
<?php
$file = './path/to/the.pdf';
$filename = 'Custom file name for the.pdf'; /* Note: Always use .pdf at the end. */
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
header('Accept-Ranges: bytes');
@readfile($file);
?>
谢谢! :)
我假设您希望PDF在浏览器中显示,而不是强制下载。 如果是这种情况,请尝试使用inline
值设置Content-Disposition
标头。
另外请记住,这也将受到浏览器设置的影响 - 某些浏览器可能被配置为始终下载PDF文件或在不同的应用程序中打开它们(例如Adobe Reader)
$url ="https://yourFile.pdf";
$content = file_get_contents($url);
header('Content-Type: application/pdf');
header('Content-Length: ' . strlen($content));
header('Content-Disposition: inline; filename="YourFileName.pdf"');
header('Cache-Control: private, max-age=0, must-revalidate');
header('Pragma: public');
ini_set('zlib.output_compression','0');
die($content);
经过测试,工作正常。 如果您想要下载文件,请替换
Content-Disposition: inline
同
Content-Disposition: attachment
您可以修改PDF呈现器(如xpdf或evince),将其渲染为服务器上的图形图像,然后将图像传递给用户。 这就是Google对PDF文件的快速浏览,它们在本地渲染,然后将图像传送给用户。 没有下载的PDF文件,并且源代码相当模糊。 :)
链接地址: http://www.djcxy.com/p/36451.html上一篇: Show a PDF files in users browser via PHP/Perl
下一篇: How can I detect Internet Explorer (IE) and Microsoft Edge using JavaScript?