Byte []が開かずにPDFであるかどうかを確認する方法はありますか?
Byte []のリストをpdfサムネイルとして表示するコードがいくつかあります。サーブレットをフィルタリングしてこれらのみを返すため、以前はすべてのbyte []がpdfであることを知っていました。要件が変更されたため、すべてのファイルタイプを元に戻す必要があります。 byte []が何であるかをチェックする方法、より具体的にはpdfでないかどうかを判断する方法はありますか?
配列の最初の4バイトを確認してください。
それらが0x25 0x50 0x44 0x46
の場合、おそらくPDFファイルです。
最初の4バイトは次のようになります。0x25 0x50 0x44 0x46
(16進形式、ASCIIそれは%PDF
)。あなたが見つけることができる別のフォーマットの「魔法数」 ここ
私の知る限り、すべてのPDFは%PDF
で始まるので、この文字列に対して最初のバイトをチェックできます。
マークされた回答と他の回答は正しいですが、100%成功するわけではありません。問題は、PDF仕様によると、%PDF-1.xは最初の1024バイトにのみ存在する必要があり、最初の4バイトには存在する必要がないということです。 。
次のStackOverflowの質問に対する回答を確認することをお勧めします: ファイルがPDFまたはTIFF? であるかどうかを検出する方法