Как конвертировать HTML в Word на JavaScript
25 марта 2020 HTML JavaScript
Экспортировать HTML-страницу как документ Microsoft Word можно различными способами. Существуют PHP-библиотеки, плагины jQuery. Но когда HTML-файл прост без какой-либо сложной разметки, тогда можно экспортировать HTML-содержимое в формат .doc без особых усилий. Мне даже не нужны сторонние библиотеки. Если вы хотите преобразовать HTML в документ Word, без плагинов или библиотек простым JavaScript-кодом, тогда читайте эту статью.
Для экспорта HTML нам потребуется немного простого кода JavaScript, где к исходному HTML добавляется содержимое переменных header
и footer
. Переменные содержат обычную HTML-разметку и пространства имен XML, необходимые для документа в формате .doc. Так же JS-скрипт динамически создаст ссылку для загрузки документа с названием файла.
HTML-код
На целевой странице будет отображаться просто отформатированный контент HTML с кнопкой управления экспортом. При нажатии этой кнопки будет вызвана JavaScript-функция exportHTML()
. Часть HTML, которая будет экспортирована в документ Word, будет идентифицирована с помощью селектора id
. В данном случае содержимое элемента div
с id="source-html
«.
Підручник Інформатика за 7 клас Ривкінд 2020
<div id="source-html"> <h1>Искусственный интеллект</h1> <h2>Обзор</h2> <p> Искусственный интеллект (ИИ) - это новая технология демонстрирующая машинный интеллект. Технологии, такие как <u><i>Нейронные Сети</i>, <i>Робототехника</i>или<i> Машинное обучение </i></u> части ИИ. Ожидается, что эта технология станет основной частью реального мира на всех уровнях. </p> </div> <div class="content-footer"> <button id="btn-export" onclick="exportHTML();">Сохранить в Word</button> </div>
Функция JavaScript для конвертации HTML в Word
Перейдем непосредственно к самой функции JavaScript. Функция создает переменную header
, содержащую XML-код, необходимый для формата .doc и HTML-разметку. В переменной footer содержатся закрывающие HTML-теги документа. Далее скрипт получает HTML-код содержащийся в контейнере div
с id="source-html"
и добавляет к нему содержимое переменных header
и footer
. В заключительном этапе динамически формируется ссылка на загрузку документа Word с указанным названием.
<script> function exportHTML(){ var header = "<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'>"+ "<head><meta charset='utf-8'><title>Export HTML to Word Document with JavaScript</title></head><body>"; var footer = "</body></html>"; var sourceHTML = header+document.getElementById("source-html").innerHTML+footer; var source = 'data:application/vnd.ms-word;charset=utf-8,' + encodeURIComponent(sourceHTML); var fileDownload = document.createElement("a"); document.body.appendChild(fileDownload); fileDownload.href = source; fileDownload.download = 'document.doc'; fileDownload.click(); document.body.removeChild(fileDownload); } </script>
Добрый день!
Спасибо за статью! Очень познавательно и главное просто и работает.
Есть вопрос: как при переводе в Word установить альбомную ориентацию страницы?
У меня таблица и при переводе она не вмещается при книжной ориентации.
Заранее спасибо!
Добрый день!
mso-page-orientation: landscape;
Спасибо за быстрый ответ.
Я пока не очень разбираюсь в JS.
Можете уточнить куда это надо прописать?
А как быть с колонтитулами и разрывами страниц?