2015-08-24 88 views
0

我讀了第一個字節來區分文件類型,但PDF和DOCX都有一個「0x50」幻數。我該如何處理這種情況?PDF和DOCX幻數

+1

爲什麼不使用文件擴展名? – Oscar

+0

Agh愚蠢的我,我只是讓事情變得複雜。非常感謝你對我的理解! :) – user3770093

回答

2

PDF文件沒有「魔術」字節。如果您閱讀PDF規範,您將看到他們必須以「%PDF」開頭,但實際上許多PDF文件不會。

1)只是尋找PDF頭來識別PDF文件是非常不可靠的,一個有效的PDF文件是一個可以解析的文件(至少有一個預告片,交叉引用表等)。

2)曾經有人建議PDF文件包含%PDF頭之前的二進制數據,以確保它們被視爲二進制文件。因此,PDF閱讀器開始在%PDF頁頭之前接受一定數量的二進制字節(隨機字節)。這種文件不能通過一個簡單的幻數或一串幻數來檢測。

+0

[需要的引證]爲您的大多數不尋常的索賠。雨果的引用表明%PDF是非常標準的。 –

+0

請參閱PDF參考文獻第二版中來自Adobe Systems的PDF版本1.3的實施說明13:「13. Acrobat瀏覽器只需要頭文件出現在文件的前1024個字節內。」。是的,這是一箇舊文件,但它仍然是世界範圍內大部分PDF標準的基礎。此外,我從1997年開始編寫了一個主要的商業PDF預檢軟件的第一個版本。相信我,我不同尋常的說法是正確的。 –

2

這很奇怪,因爲我看到0x25的PDF文件和0x50的DOCX文件...(source 1source 2)。 但是,當您以文本模式打開這些文件時,在ISO 8859-1編碼中,您可以看到DOCX文檔以「PK」開頭,而PDF文檔以「%PDF」開頭。

希望它有幫助!雨果。