Проблема с отображением страницы coldfusion / html как расширения docx, а не расширения doc

Я пишу приложение, используя ColdBox/ORM. Что касается моей проблемы, я пытаюсь отображать / загружать HTML-код с расширением файла .docx, а не с расширением файла .doc. При загрузке визуализированного документа и попытке его открыть я получаю всплывающее окно с сообщением

Word обнаружил нечитаемый контент в ***********. Вы хотите восстановить содержимое этого документа?

страница .cfm

В файле, который я пытаюсь отобразить, в теге html есть следующее

 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:w="urn:schemas-microsoft-com:office:word"
 xmlns="http://www.w3.org/TR/REC-html40"

страница .cfc

исходный код

event.renderData(data=fileReadBinary('fileName.doc')
      , contentType='application/msword'
      , isBinary=true);

новый код

event.renderData(data=fileReadBinary('fileName.docx')
       , contentType='application/vnd.openxmlformats-officedocument.wordprocessingml.document'
       , isBinary=true);

Мой ожидаемый результат состоит в том, чтобы содержимое файла .cfm отображалось в файле .docx и имело возможность открывать и просматривать его. Что на самом деле происходит, так это то, что я получаю всплывающее окно с сообщением "Word обнаружил нечитаемое содержимое в ***********. Вы хотите восстановить содержимое этого документа?" с кнопками "да"/"нет". Даже при выборе да я не вижу содержимое файла. Однако текущий код успешно отображается как файл .doc, который я могу просмотреть/открыть.


person John    schedule 08.09.2019    source источник


Ответы (1)


Как уже упоминалось @Ageax, docx - гораздо более сложный файл. На самом деле это zip-файлы. Если вы возьмете .docx и переименуете его в .zip, вы сможете открыть его и проверить, что на самом деле входит в .docx. Вы должны найти содержимое в файле /word/document.xml zip. Вместо того, чтобы пытаться создать его с нуля, вы можете настроить шаблон документа, который вы пытаетесь создать, с заполнителями. Вы можете разархивировать шаблон, отредактировать файл document.xml со своими данными, заархивировать и переименовать в docx.

person MattInVail    schedule 11.10.2019
comment
Я тоже так думал. Однако, по-видимому, Word может разбивать текст по несколько тегов в некоторых случаях. Таким образом, простой поиск и замена {placeholder} может завершиться неудачно. Какой позор, потому что это простое и элегантное решение. - person SOS; 12.10.2019