Вложения к документам, Генерация pdf - Разработка модуля для хранения и управления документами в электронном виде
Для реализации вложенных файлов было принято решение использовать сторонний гем paperclip (https://github. com/thoughtbot/paperclip). Он позволяет организовать хранение загруженных файлов, управление размерами изображений, а также связь изображений и объектов.
Функциональность гема была несколько расширена, вложенный файл теперь относится к объекту типа FileAttach, содержащий дополнительную логику для управления типами и состояниями файлов.
Теперь для того, чтобы появилась возможность прикладывать изображения к документу, в определении его класса необходимо вызвать метод has_file_attaches.
Генерация pdf
Согласно разработанной архитектуре, в проекте должно появиться несколько типов документов, генерирующих вложение при сохранении.
Было решено использовать дополнительный абстрактный класс Agreement, наследник класса Document. В данном классе была реализована логика генерации pdf-файлов при сохранении документа.
Конкретные классы договоров наследуются от класса Agreement и должны переопределить метод fields_to_replace, в котором формируется хеш вида {:имя_поля => значение}. Т. к. документ имеет доступ как к объекту, к которому относится, так и к любым другим документам, то в хеш могут быть собраны практически любые необходимые данные (в трудовом договоре это могут быть паспортные данные владельца, номер ИНН и пр.)
После сохранения документа вызывается метод generate_attachment, унаследованный от класса Agreement. Метод проводит поиск odt-шаблона документа в папке app/agreement_templates/ и, в случае успеха, создает временную копию найденного шаблона. В ней производится следующая обработка:
- 1) вызов метода fields_to_replace с целью получения хеша значений для замены; 2) поиск лексем вида "[ИМЯ_ПОЛЯ]" в шаблоне и замена вхождений значениями из хеша; 3) вызов консольной команды libreoffice для конвертации полученного odt-файла в pdf; 4) приложение pdf в виде вложенного файла к документу; 5) удаление временного odt-файла.
Для обработки odt был использован сторонний гем ODFReport.
Каждому классу, наследующемуся от Agreement, необходимо создать одноименный odt-файл в каталоге app/agreement_templates/.
Похожие статьи
-
Документы должны иметь различные типы, которые определяют логику их поведения. Должна быть возможность создать новый тип документа и определить его...
-
Среда Rails поддерживает работу с большинством современных баз данных, таких как MySQL, SQLite, PostgreSQL. Для этого используются различные адаптеры,...
-
Сериализация полей - Разработка модуля для хранения и управления документами в электронном виде
Документ может содержать произвольное количество полей различных типов (номер, имя, фамилия, отчество и т. д.). Программист, реализующий наследников...
-
Модуль должен поддерживать механизм состояний документов. На стадии разработки технического задания были выделены следующие состояния: - Черновик...
-
Разработка модели модуля с учетом архитектурных решений Полиморфные связи Документ может относиться к объектам различного типа, поэтому разумно...
-
Анализ требований к модулю электронных документов Сущность документа Разрабатываемый модуль должен вводить в приложение новую сущность -- документ,...
-
Веб-фреймворк Ruby on Rails разработан на языке Ruby и является вторым по популярности по версии http://hotframeworks. com. Основными чертами фреймворка...
-
Обзор паттерна MVC Впервые описал схему Model-view-controller (Модель-вид-контроллер) Трюгве Реенскауг, норвежский ученый из университета в Осло,...
-
Введение - Разработка модуля для хранения и управления документами в электронном виде
Актуальность Во многих современных системах автоматизированного управления бизнес-процессами предприятий возникает необходимость в организации и...
-
Subversion - Разработка модуля для хранения и управления документами в электронном виде
Сайт: http://subversion. apache. org/ Subversion -- централизованная система контроля версий, распространяемая под свободной лицензией (Apache License)....
-
Flagship Docs представляет собой популярную систему управления документами, разработанную компанией RPI Web Tech Group. Данная система решает широкий...
-
Цель Работы - использовать принципы архитектуры "Документ-Представление" для выборки и сохранения данных в файлах, а также взаимодействия элементов меню,...
-
Вид - Разработка модуля для хранения и управления документами в электронном виде
Представления в Ruby on Rails реализованы в виде Erb-шаблонов -- html-файлов со вставками кода на языке Ruby. Дополнительная логика, внедряемая в шаблон,...
-
Тестирование - Разработка модуля для хранения и управления документами в электронном виде
С запуска нового проекта на Rails среда создает для него всю необходимую тестовую инфраструктуру. Фреймворк поддерживает следующие виды тестов: 1)...
-
Git - Разработка модуля для хранения и управления документами в электронном виде
Git -- распределенная система контроля версий, разработанная создателем ядра Linux Линусом Торвальдсом в 2005 году. Система быстро набрала популярность и...
-
Контроллер является связующим звеном между пользователем, представлением и моделью. Он получает запросы от пользователя, взаимодействует с моделью и...
-
В настоящее время существует множество систем управления информационными ресурсами предприятия (ECM - Enterprise content management ), предназначенных...
-
Цель Работы - изучить приемы создания и использования шаблонов классов. - Теоретические сведения Достаточно часто встречаются классы, объекты которых...
-
Сравнение Git и SVN - Разработка модуля для хранения и управления документами в электронном виде
Аргументы в пользу Subversion: 1) централизованность системы позволяет не хранить на компьютере весь репозиторий, а лишь срез репозитория -- конкретную...
-
Еще одна причина выбрать git в качестве системы контроля версий -- сильное и профессиональное сообщество, возникшее на сайте GitHub (https://github....
-
На рис. 4 представлена схема работы Rails-приложения. Рассмотрим ее подробнее: 1) клиент из браузера посылает запрос на сервер; 2) запрос обрабатывается...
-
Рассмотрим сформулированные основные требования для решения поставленной задачи. Функциональные требования: - Выбор пользователем частных критериев...
-
Защита персональных данных регламентируется Федеральным Законом РФ № 152-ФЗ "О персональных данных", принятым 27 июля 2006 года. Целью настоящего...
-
SimpleXML. В PHP версии 5.0 и выше появилось расширение для работы с xml структурой. Библитека SimpleXML содержит большое количество методов для работы с...
-
В работе использовались следующее программное обеспечение для решения поставленных задач: AutoCAD, ANSYS Workbench, ANSYS Icepak. Система AutoCAD...
-
Гражданский кодекс Российской Федерации в части четвертой регулирует вопросы охраны результатов интеллектуальной деятельности и средств индивидуализации....
-
В документации к sane-backends содержится описание флага wait-for-button. Данный флаг взаимодействует с утилитой scanimage, который ожидает нажатия любой...
-
Введение - Разработка прототипа веб-приложения "Репозиторий электронных ресурсов"
Большое количество информации, а именно библиографические ресурсы, доступные в электронном варианте, включающие в себя учебно-методические пособия,...
-
Понятие Data Mining Средства Data Mining включают в себя очень широкий класс различных технологий и инструментов. Средства Data Mining на рынке...
-
Объектно-ориентированное программирование (ООП) является парадигмой программирования, которая представляет понятия, как "объекты", которые имеют поля...
-
Средства разработки В качестве целевого языка программирования была выбрана Java из-за ее распространенности. Данная система разделения кода также...
-
Для чего нужны Базы Данных - База данных склада обоев
В настоящее время в современном мире электронных технологий практически невозможно представить компанию, в которой не требуется обработка некоторого...
-
Серверная программа, Инструменты разработки - Визуализация графа цитирования
Серверная программа - это веб-сервер, необходимый для получения и хранения графов. Сервер может создавать графы цитрования из библиотеки IEEE Xplore...
-
Общие сведения о системах контроля версий При разработке программного обеспечения необходимо иметь подробную историю изменений в исходных кодах...
-
Появление на рынке систем управления электронными документами - EDMS (Electronic Document Management Systems) вызвано стремлением сократить поток...
-
При разработке различных объектов и процессов в большинстве случаев требуется ввести более одной целевой функции. В этом случае, намного эффективней...
-
К задачам параметрической оптимизации, относятся следующие задачи: - Определение оптимальных значений параметров. - Назначение оптимальных допусков на...
-
Основные понятия и определения Прежде чем приступить к обсуждению вопросов оптимизации, введем ряд определений и рассмотрим основные понятия. Оптимизация...
-
В ходе проектирования объектов зачастую происходит многократное повторение различных операций проектирования. Основная причина заключается в том, что...
-
Назначение комплекса Комплекс "CADoptimizer" разрабатывался для решения задач многокритериальной и многопараметрической оптимизации при проектировании...
Вложения к документам, Генерация pdf - Разработка модуля для хранения и управления документами в электронном виде