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.