ユーザーに PDF ファイルを表示したいと考えています。PDF を表示するために CGI を使用する理由は、PDF のクリックを追跡し、保存された PDF の実際の場所を隠したいためです。
インターネットで検索したところ、ユーザーにファイルを表示するのではなく、保存ダイアログをユーザーに表示して PDF を作成する方法しか見つかりませんでした。
私が望んでいたのは、PDF を作成したりダウンロードしたりすることではなく、ユーザーに PDF ファイルを表示することでした。
以下は、PHP の公式ドキュメントから取得した内容です。
<?php
header('Content-type: application/pdf');
readfile('the.pdf');
?>
また、私の Google 検索結果の 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
ruby でやるなら、私に教えてください。ただし、私のサーバーが Rails をサポートしているかどうかはわかりません。
私は 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);
?>
ありがとう! :)
ベストアンサー1
PDF を強制的にダウンロードするのではなく、ブラウザで表示したいとお考えだと思います。その場合は、ヘッダーContent-Disposition
の値を に設定してみてくださいinline
。
また、これはブラウザの設定にも影響されることを覚えておいてください。一部のブラウザでは、いつもPDF ファイルをダウンロードするか、別のアプリケーション (Adobe Reader など) で開きます。