wiki:ru/ODF

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>

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

Element Style Family Notes
<config:config-item>
<meta:user-defined>
<office:script> arbitrary child elements are permitted
<text:date>
<text:h> paragraph
<text:p> paragraph
<text:span> text
<text:a> text
<text:meta>
<text:meta-field>
<text:note-citation>
<text:page-continuation>
<text:page-number>
<text:ruby-base> ??? not style attribute, but it is referenced in specification
<text:ruby-text> text
<text:sender-city>
<text:sender-company>
<text:sender-country>
<text:sender-email>
<text:sender-fax>
<text:sender-firstname>
<text:sender-initials>
<text:sender-lastname>
<text:sender-phone-private>
<text:sender-phone-work>
<text:sender-position>
<text:sender-postal-code>
<text:sender-state-or-province>
<text:sender-street>
<text:sender-title>
<text:time>
<text:author-name>
<text:author-initials>
<text:chapter>
<text:file-name>
<text:template-name>
<text:sheet-name>
<text:variable-set>
<text:variable-get>
<text:variable-input>
<text:user-field-get>
<text:user-field-input>
<text:sequence>
<text:expression>
<text:text-input>
<text:initial-creator>
<text:creation-date>
<text:creation-time>
<text:description>
<text:user-defined>
<text:print-time>
<text:print-date>
<text:printed-by>
<text:title>
<text:subject>
<text:keywords>
<text:editing-cycles>
<text:editing-duration>
<text:modification-time>
<text:modification-date>
<text:creator>
<text:page-count>
<text:paragraph-count>
<text:word-count>
<text:character-count>
<text:table-count>
<text:image-count>
<text:object-count>
<text:database-display>
<text:database-row-number>
<text:database-name>
<text:page-variable-set>
<text:page-variable-get>
<text:placeholder>
<text:conditional-text>
<text:hidden-text>
<text:reference-ref>
<text:bookmark-ref>
<text:note-ref>
<text:sequence-ref>
<text:script>
<text:execute-macro>
<text:hidden-paragraph>
<text:dde-connection>
<text:measure>
<text:table-formula>
<text:bibliography-mark>
<text:index-title-template>
<text:index-entry-span>
<table:title>
<table:desc>
<svg:title>
<svg:desc>
<presentation:header-decl>
<presentation:footer-decl>
<presentation:date-time-decl>
<form:item>
<form:option>
<number:embedded-text>
<number:currency-symbol>
<number:text>
<text:linenumbering-separator>
<text:note-continuation-notice-forward>
<text:note-continuation-notice-backward>
Last modified 8 years ago Last modified on Feb 8, 2013, 2:23:54 AM
Note: See TracWiki for help on using the wiki.