web-dev-qa-db-ja.com

byte []がPDFファイルであるかどうかを判別します

Byte []が開かずにPDFであるかどうかを確認する方法はありますか?

Byte []のリストをpdfサムネイルとして表示するコードがいくつかあります。サーブレットをフィルタリングしてこれらのみを返すため、以前はすべてのbyte []がpdfであることを知っていました。要件が変更されたため、すべてのファイルタイプを元に戻す必要があります。 byte []が何であるかをチェックする方法、より具体的にはpdfでないかどうかを判断する方法はありますか?

26
rik

配列の最初の4バイトを確認してください。

それらが0x25 0x50 0x44 0x46の場合、おそらくPDFファイルです。

47

最初の4バイトは次のようになります。0x25 0x50 0x44 0x46(16進形式、ASCIIそれは%PDF)。あなたが見つけることができる別のフォーマットの「魔法数」 ここ

17
chopikadze

私の知る限り、すべてのPDFは%PDFで始まるので、この文字列に対して最初のバイトをチェックできます。

10
DanielB

マークされた回答と他の回答は正しいですが、100%成功するわけではありません。問題は、PDF仕様によると、%PDF-1.xは最初の1024バイトにのみ存在する必要があり、最初の4バイトには存在する必要がないということです。 。

次のStackOverflowの質問に対する回答を確認することをお勧めします: ファイルがPDFまたはTIFF? であるかどうかを検出する方法

4