Проверьте файл шаблона слова - PullRequest
1 голос
/ 25 мая 2009

Как я могу проверить файл шаблона слова. Это можно проверить с помощью расширения .dot или .dotx. Но если пользователь изменил .txt на .dot. Как это можно определить ??

Ответы [ 4 ]

1 голос
/ 25 мая 2009

Согласно http://www.garykessler.net/library/file_sigs.html, полная подпись точечного файла (среди прочего):

D0 CF 11 E0 A1 B1 1A E1

Итак, ниже приведен код для начала. Он работает для .dot, но если вы хотите проверить .dotx, вы можете реализовать подобный код. Это не гарантирует, что это правильная точка, поэтому вам все равно придется обрабатывать ошибки позже.

// Use this as a class field.
private static readonly byte[] DOT_SIGNATURE = new byte[]{0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1};

Позже, когда у вас есть Поток:

bool isDot = true;

Stream dotStream = ...
byte[] firstBytes = new byte[DOT_SIGNATURE.Length];
int totalRead = 0, curRead;

while(totalRead < DOT_SIGNATURE.Length)
{
    curRead = dotStream.Read(firstBytes, totalRead, DOT_SIGNATURE.Length - totalRead);
    if(curRead == 0)
    {
            isDot = false;                
            break; // Premature end of stream;
    }

    totalRead += curRead;
}

if(isDot)
{
    for(int i = 0; isDot && i < DOT_SIGNATURE.Length; i++)
    {
            // If isDot becomes false, arrays are not equal and we break out.
            isDot = (firstBytes[i] == DOT_SIGNATURE[i]);
    }
}

dotStream.Seek(0, SeekOrigin.Begin);
1 голос
/ 25 мая 2009

Чтобы проверить файл dotx (который на самом деле является zip-файлом), проверьте заголовок:

0000000: 504b 0304 1400 0000 0800 95a1 3435 4a07  PK..........45J.

Первые четыре байта: 0x050 0x4b 0x03 0x04. Это покажет, является ли файл zip-файлом (поэтому не обязательно точкой), если вы захотите провести дополнительную проверку, вам потребуется распаковать весь буфер и проанализировать полученный XML.

Чтобы проверить файл точек (до 2007 г.), проверьте заголовок:

0000000: d0cf 11e0 a1b1 1ae1 0000 0000 0000 0000  ................

Первые восемь байтов 0xd0 0xcf 0x11 0xe0 0xa1 0xb1 0x1a 0xe1

Так что в любом из этих случаев откройте файл в двоичном режиме, прочитайте первые восемь байтов и сравните.

0 голосов
/ 25 мая 2009

Файл .dotx - это всего лишь ZIP-файл, поэтому вы можете проверить, начинается ли он с «PK» (zip-заголовок), тогда вам нужно будет полностью распаковать файл и проверить, является ли содержимое допустимым шаблоном Word.

0 голосов
/ 25 мая 2009

проверьте подпись файла, файл .dot должен начинаться с D0 CF .....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...