2013-07-01 3 views
0

У меня возникла ситуация, когда я получаю документ ms-word (docx) как поток/bytearray из веб-службы.Свойства отсутствуют в файле docx

Затем я пытаюсь воссоздать файл, присвоив ему то же имя и контент, что и раньше.

Если я сравниваю исходный файл и файл, созданный после загрузки, то они идентичны.

Однако, когда я пытаюсь открыть новое в слове, я получаю сообщение об ошибке, и если вы принимаете riscs, я могу его открыть.

Если я смотрю на свойства файла в окнах, в новом отсутствует много информации.

Кто-нибудь знает, как воссоздать свойства, чтобы файл можно было открыть без ошибок?


Просто дополнительный кусок информации .. Если я использую .doc (word97-2003) документы, все работает нормально, только .docx документы являются проблемой (также .xlsx и все документы в офисе 2007-2010).

Это мой код создает файлы ..

private static void saveBytesAsFile(String path, String filename, byte[] data){ 
    try { 
     File dir = new File(path); 
     dir.mkdirs(); 
     OutputStream os = new FileOutputStream(path + "/" + filename); 
     os.write(data); 
     os.flush(); 
     os.close(); 
    } catch (FileNotFoundException fnfe) { 
     fnfe.printStackTrace(); 
    } catch (IOException ioe) { 
     ioe.printStackTrace(); 
    } 
} 

я сравнил оригинал и воссозданный файл в блокноте ++, и получил результат, что они идентичны.

Вот как я вижу, что некоторые свойства отсутствуют.

Image of properties

Эти предупреждения я получаю от слова:

Если я нажмите ОК на первом и да на второй я могу открыть документ в любом случае.

Word Warnings

+0

Вы должны включить код, который воссоздает файл. Можете помочь людям понять, что происходит. – Henrik

+0

Как вы сравниваете исходный файл и загруженный файл? Какие атрибуты говорят вам, что это точно такие же файлы? – cyroxx

+0

Если вы решили проблему, отправьте ответ. Это принятый способ сделать это на SO. Кроме того, не редактируйте свой заголовок для решения. – maxf130

ответ

0

РЕШЕНИЕ

Оказалось, что не было никаких проблем со свойствами.

Это было просто так, что где-то в службах, которые предоставили данные документа, в конце данных файла был добавлен дополнительный пустой символ.

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

И это также мешает анализировать свойства файла.

Что было довольно раздражающим, было то, что инструменты сравнения файлов не поймали это. (Или, может быть, некоторая конфигурация конечных пробелов не игнорируется.)

0

Если вас просят «принять риски», то это звучит как поведение Word, по умолчанию при загрузке документов из Интернета, не ошибка. Вы можете изменить поведение Word из параметров Word, Trust Center (при условии, что вы используете Word 2007 или новее).

Поэтому я сомневаюсь, что недостающие свойства являются проблемой. Можно изменить дату создания документа, который вы воссоздаете, путем изменения системных часов перед созданием нового документа (на основе содержимого предыдущего документа). Я не рекомендую эти шаги.

Смежные вопросы