ユーザーにPDFファイルを表示したい。私がcgiを使用してpdfを表示する理由は、pdfのクリックを追跡し、保存されたpdfの実際の場所を隠したいためです。
私はインターネットで検索していて、ユーザーにファイルを表示せずに、ユーザーに保存ダイアログを表示してPDFを作成する方法を見つけました。
私が欲しかったのは、PDFを作成またはダウンロードするのではなく、PDFファイルをユーザーに表示することです。ここに私が公式のphpドキュメントから得たものがあります:
<?php
header('Content-type: application/pdf');
readfile('the.pdf');
?>
また、私のgoogle-search-result perlコード:
open(PDF, "the.pdf") or die "could not open PDF [$!]";
binmode PDF;
my $output = do { local $/; <PDF> };
close (PDF);
print "Content-Type: application/pdf\n";
print "Content-Length: " .length($output) . "\n\n";
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);
?>
ありがとう!:)