wiki:ru/ODF

Version 4 (modified by vadim.godunko, 8 years ago) ( diff )

--

Open Document Format & Cloud Computing

Реализовать WYSIWYG редактор в HTML/CSS/JS вполне реалистично. На практике существуют подобные проекты, например WebODF.

Реализовывать печать документов предпочтительнее через PDF, нежели сресдтвами браузера, поскольку:

  • управление печатью из JS минимально;
  • браузер может добвалять свои заголовки и подписи и их невозможно отключить программно;
  • пользователь может выставить масштаб печати и всё пойдёт наперекосяк.

Архитектура

В виду вышеперечисленного видится следующая архитектура системы:

  • ядро для работы с документами ODF, позволяющее читать, записывать, создавать и модифицировать документы;
  • модуль для web-сервера, выполняющий взаимодействие с клиентом (браузером) для редактирования документа. Взаимодействие производиться с использованием формата JSON; скрипт на стороне клиента выполняет формирование HTML/CSS и обработку ввода пользователя; он же передаёт изменения на сторону сервера, где модифицируется основной документ. Здесь же можно предусмотреть и популярную функцию одновременного интерактивного редактирования документа;
  • модуль печати в PDF, выполняющий преобразование документа из внутреннего представления в формат PDF.

Для внутреннего представления можно использовать модель, аналогичную DOM; т.е. представлять документ как дерево узлов, каждый из которых соответствует элементу XML.

Замечания

Стили

Стиль в общем случае имеет следующие поля:

style:auto-update
style:class
style:data-style-name
style:default-outline-level
style:display-name
style:family
style:list-level
style:list-style-name
style:master-page-name
style:name
style:next-style-name
style:parent-style-name
style:percentage-data-style-name
<style:chart-properties>
<style:drawing-page-properties>
<style:graphic-properties>
<style:map>
<style:paragraph-properties>
<style:ruby-properties>
<style:section-properties>
<style:table-cell-properties>
<style:table-column-properties>
<style:table-properties>
<style:table-row-properties>
<style:text-properties>

Элементы, допускающие текстовую информацию

<text:h>
<text:p>
<text:span>
<text:a>
<text:meta>
<text:ruby-base>
<text:meta-field>
<office:script> arbitrary child elements are permitted
Note: See TracWiki for help on using the wiki.