Загрузите ‹div› в .doc или .docx с помощью JS

Скажем, у меня есть динамическое содержимое div:

//a button to click, or something
<button type="button">Download Content as a .doc</button>

//Div to be downloads as .div
<div class="gc"> //Generated content
   <h1>A Header</h1>
   <p>A Paragraph</p>
   <ul><li>A</li><li>List</li><li>Here</li></ul>
</div>

Какие способы вы можете предложить для решения этой проблемы, не используя помощь на стороне сервера? Я открыт для JS, так как сейчас изучаю это, и могу получить доступ к div с помощью Jquery, просто ища простой ответ или подсказку в правильном направлении для изучения.

Надеюсь, это так же просто, как и отображение pdf в div, например this, но я не знаю.

В моей конкретной ситуации содержимое может быть отформатировано или нет, помещено как объект в слово или какой-либо другой необычный обходной путь, или, возможно, с использованием обычного расширения браузера. В конечном счете, я просто хочу иметь возможность предлагать пользователю версию контента в формате .doc (потенциально .docx).

Если я ДОЛЖЕН использовать функциональность на стороне сервера, есть ли какие-нибудь хорошие ссылки, которые помогут мне найти решение? так как я не знаю AJAX или PHP, но хочу учиться!


person chris Frisina    schedule 04.08.2012    source источник


Ответы (3)


Это невозможно без какой-то серверной штуки, которая будет отправлять правильные заголовки.

Вы можете переименовать файл .html в .doc, и Word его съест, но вам все равно понадобится PHP или любой другой серверный язык, который вы предпочитаете использовать для отправки тега загрузки содержимого и приложения /vnd типа содержимого. -ms-word заголовок.

Это невозможно с чистым javascript из-за очевидных угроз безопасности.

person SchizoDuckie    schedule 04.08.2012

Частично это возможно с помощью HTML5 с использованием построителей BLOB-объектов и URL-адресов объектов. Сложная часть — это создание файла, совместимого с текстом, оставленного читателю в качестве упражнения:

// normalize vendor extensions
window.BlobBuilder = window.MozBlobBuilder || window.WebKitBlobBuilder || window.BlobBuilder;
window.URL = window.URL || window.webkitURL;

// create the file and append contents to it
var blobthebuilder = new BlobBuilder();
blobthebuilder.append("some text");

// create a URL for the newly created file with a mime
// type and make the anchor point to it
anchor.href = window.URL.createObjectURL(blobthebuilder.getBlob("text/html"));​

Webkit также поддерживает a[download], который автоматически загружает файл, вместо того, чтобы щелкнуть левой кнопкой мыши Сохранить как...

Демонстрация на jsFiddle.

person Dennis    schedule 04.08.2012

Я не думаю, что вы можете сделать это без каких-либо сценариев на стороне сервера через AJAX.

Если вы используете php, было бы просто отправить через AJAX и отправить обратно в виде текстового файла для загрузки. Тогда вам просто нужно найти скрипт, который может преобразовать его в файл .doc, так как это сложный формат.

Однако я не уверен в HTML5. Имеет много новых функций.

Редактировать: хорошо, я вижу, что SchizoDuckie опередил меня на 1 минуту, лол :о)

person Dan Mikkelsen    schedule 04.08.2012