Вторая конференция .NET разработчиков<br />Анонс OpenSource библиотеки для создания и изменения документов в формате OpenX...
Пользовательский сценарий<br />Шаблон<br />Пользователь скачивает документ<br />Пользователь редактирует документ<br />Ген...
Требования<br /><ul><li>Генерация документа со сложным форматированием по шаблону
Подстановка значений в обновляемые поля
Возможность защиты документа (или его частей) от редактирования</li></li></ul><li>Содержимое документа нужновставлять вмес...
Tags<br />
Показ скрытых символов<br />
Tags<br />
Тег<br />Тег – скрытая метка-параграф, внутрь которой можно вставить объемлющий элемент документа:<br /><ul><li>Параграф
Список
Таблицу</li></ul>	и т.д.<br />
Placeholders<br />
Placeholders<br />
Placeholder<br />Placeholder – скрытая метка внутри параграфа, внутрь которой можно вставить блок текста<br />
Запрет редактирования<br />
Запрет редактирования<br />
MS Word via COM Interop<br />Приложение<br />COM объект<br />
Трудности<br />Приложение<br />COM объект<br />
Имя им – Легион<br />
MS Word – лишний<br />
Пожирание денег<br />
So slow<br /><ul><li>2 – 5 мин на генерацию документа
 Потери времени на запуск и закрытие приложения MS Word</li></li></ul><li>OpenXML SDK<br />
Формат OpenXML<br />
<ul><li> Дерево с элементами самоподобия
 Используется иерархическая агрегация</li></li></ul><li>
Достоинства OpenXMLSDK<br /><ul><li>MS Word не используется
Высокая скорость работы
Работа с телом документа с меньшим уровнем абстракции
Возможность построения более гибкого API</li></li></ul><li>Божественный класс<br />publicinterfaceIDocxDocument{<br />	voi...
Почему Fluent?<br />
Fluent –это<br /><ul><li>Декларативное задание желаемой структуры документа
Уменьшение числа методов
Низкий порог вхождения
Upcoming SlideShare
Loading in …5
×

Fluent OpenXML - Foxby

960 views
899 views

Published on

Слайды презентации к докладу "Анонс OpenSource библиотеки для создания и изменения документов в формате OpenXml через Fluent-интерфейс" со второй конферции .NETConf

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
960
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Fluent OpenXML - Foxby

  1. 1. Вторая конференция .NET разработчиков<br />Анонс OpenSource библиотеки для создания и изменения документов в формате OpenXml через Fluent-интерфейс<br />Тимур Рахматиллаев<br />IndyCode<br />twitter.com/eskat0n<br />
  2. 2. Пользовательский сценарий<br />Шаблон<br />Пользователь скачивает документ<br />Пользователь редактирует документ<br />Генерация документа<br />Обновление некоторых значений в документе<br />Документ закачивается на сервер<br />
  3. 3. Требования<br /><ul><li>Генерация документа со сложным форматированием по шаблону
  4. 4. Подстановка значений в обновляемые поля
  5. 5. Возможность защиты документа (или его частей) от редактирования</li></li></ul><li>Содержимое документа нужновставлять вместо или внутрь специальных меток, заданных в шаблоне<br />
  6. 6. Tags<br />
  7. 7. Показ скрытых символов<br />
  8. 8. Tags<br />
  9. 9. Тег<br />Тег – скрытая метка-параграф, внутрь которой можно вставить объемлющий элемент документа:<br /><ul><li>Параграф
  10. 10. Список
  11. 11. Таблицу</li></ul> и т.д.<br />
  12. 12. Placeholders<br />
  13. 13. Placeholders<br />
  14. 14. Placeholder<br />Placeholder – скрытая метка внутри параграфа, внутрь которой можно вставить блок текста<br />
  15. 15. Запрет редактирования<br />
  16. 16. Запрет редактирования<br />
  17. 17. MS Word via COM Interop<br />Приложение<br />COM объект<br />
  18. 18. Трудности<br />Приложение<br />COM объект<br />
  19. 19. Имя им – Легион<br />
  20. 20. MS Word – лишний<br />
  21. 21. Пожирание денег<br />
  22. 22. So slow<br /><ul><li>2 – 5 мин на генерацию документа
  23. 23. Потери времени на запуск и закрытие приложения MS Word</li></li></ul><li>OpenXML SDK<br />
  24. 24. Формат OpenXML<br />
  25. 25. <ul><li> Дерево с элементами самоподобия
  26. 26. Используется иерархическая агрегация</li></li></ul><li>
  27. 27. Достоинства OpenXMLSDK<br /><ul><li>MS Word не используется
  28. 28. Высокая скорость работы
  29. 29. Работа с телом документа с меньшим уровнем абстракции
  30. 30. Возможность построения более гибкого API</li></li></ul><li>Божественный класс<br />publicinterfaceIDocxDocument{<br /> voidCleanContent(stringtagName);<br /> void Replace(stringsingleTagName, stringnewValue);<br /> void Replace(stringtagName, IEnumerable<TextBlock> content);<br /> void Replace(IEnumerable<KeyValuePair<string, string>> replacements);<br />OpenXmlElementGetParagraph(stringformattedName);<br />TagReplacerGetTagReplacer(string name);<br />boolExistsUniqueTagWithInnerText(string text);<br /> byte[]ToArray();<br /> void Unprotect();<br /> void Protect();<br /> voidSetProtectionAttribute(string value);<br /> voidSetCustomProperty(string name, string value);<br />stringGetCustomProperty(string name);<br />и еще 16 методов!<br />
  31. 31. Почему Fluent?<br />
  32. 32. Fluent –это<br /><ul><li>Декларативное задание желаемой структуры документа
  33. 33. Уменьшение числа методов
  34. 34. Низкий порог вхождения
  35. 35. Модно</li></li></ul><li>Пример использования<br />var builder =newDocxDocumentBuilder(document);   <br />builder <br /> .Tag("MAIN_CONTENT", x => x<br /> .EditableStart() .Indent.Paragraph("Тестовый 1").Indent.Paragraph("Тестовый 2").EditableEnd());<br />
  36. 36. Теги и placeholder’ыможно вставлять в документ в runtime<br />
  37. 37. Поддержка форматирования<br /><ul><li>Атрибуты текста
  38. 38. Выравнивание параграфов
  39. 39. Отступы
  40. 40. Таблицы с настраиваемым видом
  41. 41. Нумерованные списки</li></li></ul><li>Области применения<br /><ul><li>Создание договоров, выписок, бланков, отчетной документации
  42. 42. Системы электронного документооборота
  43. 43. Бухгалтерские системы</li></li></ul><li>Демонстрация<br />
  44. 44. code.google.com/p/fluent-openxml/Лицензия: GNU GPLv2<br />
  45. 45. Спасибо за внимание<br />Тимур Рахматиллаев<br />IndyCode<br />timur.rakhmatillaev@indycode.ru<br />twitter.com/eskat0n<br />

×