0

PDFドキュメントが実際にPDFドキュメントであるかどうか、および破損していないかどうかを判断する信頼できる方法を誰かが持っているかどうか、私は迷っています。

自分のシステムでレポートを生成していますが、別のシステムから返されたデータに開くことができる PDF ドキュメントが含まれていること (およびデータが破損していないこと) を確認したいと考えています。

現時点では、基本的に文字列の長さを見ています (PDF は物理ファイルではなく変数に格納されます)。PHPでこれを行うための推奨事項は素晴らしいでしょう。

4

2 に答える 2

3

ファイルが PDF ファイルであることを確認したいだけで、問題のない完全な無傷の PDF ファイルであることを確認しない場合は、ファイルの最初の 5 バイトを読み取ることができます。PDF ファイルの場合、それらは正確に文字列「%PDF-」

これはfile、Linux のプログラムが PDF ファイルを識別する方法です。

ただし、ファイルのどこにもエラーがないことを確実に確認したい場合は、ファイル全体を処理するプログラムを実行し、そのプログラムが成功を返すかどうかを確認できます。

Linux では、ghostscript ("gs") を使用して PDF ドキュメントを任意の形式にレンダリングできます。

または、acrobat リーダーをインストールacroreadし、コマンド ライン プログラムとして実行して、postscript に変換することもできます。

acroread -print -toPostScript [your_file.pdf]

これらのいずれかを行うには、systemPHP 関数を使用する必要があります。systemプログラムが正常に実行されたことを確認するには、戻りステータスを受け取る変数を の 2 番目のパラメータに渡す必要があります。

于 2012-04-27T02:34:07.240 に答える
1

pdfinfocentosインストール コマンドを使用できます。

yum install poppler-utils

...そしてpdfinfoコマンドを使用します。PHPコードは次のとおりです。

if(!exec("pdfinfo test.pdf")){
  echo "file is corrupted"
}
于 2020-01-14T06:47:23.647 に答える