911 likes | 1.28k Views
Пример использования сервиса отложенной печати, формирования отчетности в rtf, pdf и рассылки по электронной почте. Миндияров Илья Главный специалист Центра информационных технологий и консалтинга ПАРУС mindiyarov@parus.ru. Вопросы рассматриваемые в презентации. Презентация возможностей
E N D
Пример использования сервиса отложенной печати, формирования отчетности в rtf, pdf и рассылки по электронной почте Миндияров Илья Главный специалист Центра информационных технологий и консалтинга ПАРУС mindiyarov@parus.ru
Вопросы рассматриваемые в презентации • Презентация возможностей • Установка и настройка Apache FOP • Получение отчетов в формате MS Word, RTF, PDF, HTML • Рассылка отчетов по электронной почте • Использования сервиса отложенной печати
Презентация возможностей Выбираем печать пользовательского отчета обычным образом
Презентация возможностей Заполняем параметры
Презентация возможностей Получаем отчет в формате PDF
Презентация возможностей Или в формате RTF
Презентация возможностей Или в формате MS Word
Презентация возможностей Пример рассылки пользовательского отчета Crystal Reports на клиента ПП Парус 8 Необходимо написать пользовательское приложение, которое обеспечит сбор параметров отчета и экспортирует результат в PDF, RTF. Особенности Crystal Reports таковы, что необходимо указывать имя базы, имя пользователя и пароль пользователя
Презентация возможностей Пример рассылки пользовательского отчета Crystal Reports на клиента ПП Парус 8 Вот результат работы. Это программа mutt в linux
Презентация возможностей Для отправки e-mail c вложениями на стороне сервера предлагаю посмотреть презентацию Чечнева Михаила Сергеевича, которую он показывал 02.12.2011. Ссылка на загрузку: http://www.parus.ru/docs/2_02_chechnev_122011.pps
Демонстрация возможностей • Сервис отложенной печати отчетов • При печати пользовательских отчетов появилась новая кнопка “В очередь”
Презентация возможностей Сервис отложенной печати отчетов После постановки отчета в очередь необходимо Зайти в новый раздел “Очередь печати отчетов”
Презентация возможностей Сервис отложенной печати отчетов И выполнить действие “Открыть отчет” у отчета с состоянием “Выполнение завершено (успешно)”
Презентация возможностей Сервис отложенной печати отчетов Будет открыт отчет
Презентация возможностей Сервис отложенной печати отчетов Данный сервис будет интересен, тем сотрудникам, которые печатают много отчетов MS Excel, которые долго выполняются. Если нет необходимости в получении результатов работы пользовательского отчета немедленно, то не будет тратится время на ожидание получения результатов работы отчета
Установка и настройка Apache FOP Скачать актуальнуюверсию Java SE Runtime Environment http://www.oracle.com/technetwork/java/javase/downloads/index.html, например,http://www.oracle.com/technetwork/java/javase/downloads/jre7u9-downloads-1859586.html Скачать актуальную бинарную стабильную версию Apache FOPhttp://xmlgraphics.apache.org/fop/download.html, например,http://apache-mirror.rbc.ru/pub/apache/xmlgraphics/fop/binaries/fop-1.0-bin.zip
Установка и настройка Apache FOP Установите JAVA Распакуйте FOP в директорию c:\fop Проверьте работоспособность командойc:\fop\fop.bat C:\fop\examples\fo\basic\border.fo c:\fop\border.pdf
Установка и настройка Apache FOP Генерация метрик русских шрифтов Создайте каталог c:\fop\fonts Скопируйте TTF шрифты, которые вы будете использовать в отчетах в папку c:\fop\fonts. Например: arial.ttf, arialbd.ttf, arialbi.ttf, ariali.ttf, arialn.ttf, arialnb.ttf, arialnbi.ttf, arialni.ttf, calibri.ttf, calibrib.ttf, calibrii.ttf, calibriz.ttf, cour.ttf, courbd.ttf, courbi.ttf, couri.ttf, symbol.ttf, tahoma.ttf, tahomabd.ttf, times.ttf, timesbd.ttf, timesbi.ttf, timesi.ttf. Скопируйте файл c:\fop\fop.bat в c:\fop\makefont.bat В последней строке файла замените "%JAVACMD%" %JAVAOPTS% %LOGCHOICE% %LOGLEVEL% -cp "%LOCALCLASSPATH%" %FOP_OPTS% org.apache.fop.cli.Main %FOP_CMD_LINE_ARGS% на "%JAVACMD%" %JAVAOPTS% %LOGCHOICE% %LOGLEVEL% -cp "%LOCALCLASSPATH%" %FOP_OPTS% org.apache.fop.fonts.apps.TTFReader %FOP_CMD_LINE_ARGS% Создайте файл c:\fop\makefonts.bat следующего содержания:for %%i in (c:\fop\fonts\*.ttf) do c:\fop\makefont.bat %%i %%i.xml
Установка и настройка Apache FOP Генерация метрик русских шрифтов Выполните файл c:\fop\makefonts.bat Откройте в редакторе файл c:\fop\conf\fop.xconf внутри тэга <fonts> добавьте тэги для всех шрифтов <font metrics-url="c:\fop\fonts\arial.ttf.xml" kerning="yes" embed-url="c:\fop\fonts\arial.ttf"> <font-triplet name="Arial"style="normal" weight="normal"/> <font-triplet name="ArialMT" style="normal" weight="normal"/> </font>
Установка и настройка Apache FOP Генерация метрик русских шрифтов Проверка корректности русификации Создайте файл c:\fop\test.fo <?xml version="1.0" encoding="windows-1251"?> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="first"> <fo:region-body/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="first"> <fo:flow flow-name="xsl-region-body"> <fo:block text-align="start" font-family="Arial" > Проверка </fo:block> </fo:flow> </fo:page-sequence> </fo:root>
Установка и настройка Apache FOP Генерация метрик русских шрифтов Выполните команду C:\fop\fop.bat -c c:\fop\conf\fop.xconf c:\fop\test.fo c:\fop\test.pdf Постотрите файл c:\fop\test.pdf
Установка и настройка Apache FOP Загрузка классов Apache FOP на сервер Oracle Создание нового пользователя CREATE USER "FOP" PROFILE "DEFAULT" IDENTIFIED BY "parusina" DEFAULT TABLESPACE "USERS" QUOTA UNLIMITED ON "USERS" ACCOUNT UNLOCK; GRANT "CONNECT" TO "FOP"; GRANT "JAVAUSERPRIV" TO "FOP"; GRANT CREATE PROCEDURE TO "FOP“; GRANT CREATE TABLE TO "FOP“; Создайте файл loadjars.bat следующего содержания c:\oracle\ora10\bin\loadjava -user fop/parusina@DATABASE -verbose -force -order -resolve -recursivejars c:\fop\build\*.jar c:\fop\lib\*.jar -fileout loaderrors.txt
Установка и настройка Apache FOP Загрузка классов Apache FOP на сервер Oracle Загрузите под пользователем FOP java class ru.parus.foprocessor Перенесите содержимое Ваших директорий c:\fop\fonts и c:\fop\conf на серверсоздайте директорию c:\fop\.fop Под DBA выполните call dbms_java.grant_permission('FOP', 'java.io.FilePermission', 'c:\fop\.fop', 'read,write'); call dbms_java.grant_permission(‘FOP', 'java.io.FilePermission', 'c:\fop\.fop\fop-fonts.cache', 'read,write'); call dbms_java.grant_permission(‘FOP', 'java.util.PropertyPermission', 'user.dir', 'read,write'); call dbms_java.grant_permission(‘FOP', 'java.util.PropertyPermission', 'user.home', 'read,write'); Где “c:\fop” директория на Вашем сервере где будут храниться файлы конфигурации, метрики шрифтов и сами шрифты.
Установка и настройка Apache FOP Загрузка классов Apache FOP на сервер Oracle Под пользователем FOP выполните. create or replace function GET_FOP_DOCUMENT ( MIME_TYPE in varchar2, XMLFO in blob, XMLXSLT in blob ) return blob as language java name 'ru.parus.foprocessor.processDocument(java.lang.String,oracle.sql.BLOB,oracle.sql.BLOB) return oracle.sql.BLOB'; Под DBA выполните сreate public synonym GET_FOP_DOCUMENT for FOP.GET_FOP_DOCUMENT; grant execute on GET_FOP_DOCUMENT to public;
Установка и настройка Apache FOP Тестирование установки Создайте процедуру create or replace procedure UDO_P_TEST_FOP_DOCUMENT ( NCOMPANY in number ,NPROCESS in number ) is B1 blob; B2 blob; begin select R.TEMPLATE_DATA into B1 from USERREPORTS R where R.COMPANY = NCOMPANY and R.RN = PKG_USERREPORTS.GET_REPORT(); B2 := GET_FOP_DOCUMENT(MIME_TYPE => 'PDF' ,XMLFO => B1 ,XMLXSLT => null); insert into FILE_BUFFER (IDENT, FILENAME, BDATA) values (NPROCESS, '.pdf', B2); end UDO_P_TEST_FOP_DOCUMENT;
Установка и настройка Apache FOP Тестирование установки Создайте пользовательский отчет с типом “Двоичные данные”
Установка и настройка Apache FOP Тестирование установки Загрузите в пользовательский отчет файл test.fo Заполните параметры отчета. Важно чтобы один из параметров имел привязку к “Идентификатор процесса”
Установка и настройка Apache FOP Тестирование установки Выполните действие “Печать” на пользовательском отчете Если установка прошла успешно, то откроется документ PDF с текстом “Проверка”
Отчеты в формате MS Word, RTF, PDF, HTML Отчеты в формате PDF Прочитайте http://msdn.microsoft.com/en-us/library/aa537167%28v=office.11%29.aspx Загрузите http://www.microsoft.com/en-us/download/details.aspx?id=16876 Установите OfficeWordWordMLtoXSL-FOSample.exe
Отчеты в формате MS Word, RTF, PDF, HTML Отчеты в формате PDF Прочитайте http://msdn.microsoft.com/en-us/library/aa537167%28v=office.11%29.aspx Загрузите http://www.microsoft.com/en-us/download/details.aspx?id=16876 Установите OfficeWordWordMLtoXSL-FOSample.exe
Отчеты в формате MS Word, RTF, PDF, HTML Отчеты в формате PDF Скачайте бланк формы вформате WS Word Выполните разметку полей – напишите какой-либо текст
Отчеты в формате MS Word, RTF, PDF, HTML Отчеты в формате PDF Сохраните размеченный документ как документ XML c применением преобразования
Отчеты в формате MS Word, RTF, PDF, HTML Отчеты в формате PDF Выполните команду c:\fop\fop.bat -c c:\fop\conf\fop.xconf c:\fop\t1a.xml c:\fop\t1a.pdf Посмотрите результат в c:\fop\t1a.pdf В целом все устраивает кроме рамки у таблицы
Отчеты в формате MS Word, RTF, PDF, HTML Отчеты в формате PDF Откроем размеченный документ MS Word Выбираем таблицу и устанавливаем “Границы и заливка” в “нет”
Отчеты в формате MS Word, RTF, PDF, HTML Отчеты в формате PDF Выбираем ячейки (по-одной) Устанавливаем “Границы и заливка” в “рамка”
Отчеты в формате MS Word, RTF, PDF, HTML Отчеты в формате PDF Снова сохраняем как документ XML
Отчеты в формате MS Word, RTF, PDF, HTML Отчеты в формате PDF Снова генерируем PDF Повторяем редактирование документа MS Word пока нас не устроит результат
Отчеты в формате MS Word, RTF, PDF, HTML Отчеты в формате PDF Пишем пользовательскую процедуру, которая генерирует XML-файл с данными, по которым будет формироваться отчет.Например: <?xml version="1.0" encoding="windows-1251"?> <REPORTS> <REPORT> <DOC_NUMB>2012-2</DOC_NUMB> <DDOC_DATE>24.08.2012</DDOC_DATE><SORGNAME> ОАО "Полюс"</SORGNAME> <SORGCODE/> <ROWS> <ROW> <FIO>Иванова Ивана Ивановича</FIO> <TBLNUM>T-14</TBLNUM> <SDEPTNAME>Дирекция</SDEPTNAME><SPOSTNAME>Главный бухгалтер</SPOSTNAME><NSUMMOKL>90000</NSUMMOKL> <NSUMMNAD/><SCNTR_NUMB/><DCNTR_DATE/><DBEGENG>24.08.2012</DBEGENG><DENDENG/><STESTPERIOD/> </ROW> <ROW> <FIO>Пауля Валерия Анатольевича</FIO><TBLNUM>T-16</TBLNUM><SDEPTNAME>Технологический отдел</SDEPTNAME> <SPOSTNAME>Teхнолог</SPOSTNAME><NSUMMOKL>5000</NSUMMOKL> <NSUMMNAD/><SCNTR_NUMB/><DCNTR_DATE/> <DBEGENG>26.11.2012</DBEGENG><DENDENG/><STESTPERIOD/> </ROW> </ROWS> <SBOSSPOST>Директор</SBOSSPOST> <SBOSSNAME>Петров П.П.</SBOSSNAME> </REPORT> </REPORTS>
Отчеты в формате MS Word, RTF, PDF, HTML Отчеты в формате PDF Сохраним файл XML с данными в c:\fop\t1a_data.xml Откроем на редактирование файл XML, который мы получили из MS Word В начале документа было: <?xml version = "1.0" encoding = "WINDOWS-1251"?> <fo:root font-family="TimesNewRoman" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"> Станет: <?xml version = "1.0" encoding = "WINDOWS-1251"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:template match ="REPORTS"> <fo:root font-family="TimesNewRoman" ….
Отчеты в формате MS Word, RTF, PDF, HTML Отчеты в формате PDF В конце документа было: </fo:flow> </fo:page-sequence> </fo:root> Станет: </fo:flow> </fo:page-sequence> </fo:root> </xsl:template> </xsl:stylesheet>
Отчеты в формате MS Word, RTF, PDF, HTML Отчеты в формате PDF Проверим, что мы все корректно сделали командой: c:\fop\fop.bat -c c:\fop\conf\fop.xconf -xml c:\fop\t1a_data.xml-xsl c:\fop\t1a.xml -pdf c:\fop\t1a.pdf В результате должны получить файл, как и прежде
Отчеты в формате MS Word, RTF, PDF, HTML Отчеты в формате PDF Открываем файл t1a.xml в редакторе Находим тэг xsl-region-body
Отчеты в формате MS Word, RTF, PDF, HTML Отчеты в формате PDF Открываем файл t1a.xml в редакторе Находим тэг fo:flow c атрибутом flow-name=“xsl-region-body”
Отчеты в формате MS Word, RTF, PDF, HTML Отчеты в формате PDF Открываем файл t1a.xml в редакторе Находим тэг fo:flow c атрибутом flow-name=“xsl-region-body”
Отчеты в формате MS Word, RTF, PDF, HTML Отчеты в формате PDF Вырезаем содержимое тэга <fo:flow> (но не сам тэг) и пишем вместо этого <xsl:apply-templates/> Создаем тэг <xsl:template match ="REPORT"> </xsl:template> Записываем внутрь тэга <xsl:template match ="REPORT"> вырезанное содержимое <fo:flow>
Отчеты в формате MS Word, RTF, PDF, HTML Отчеты в формате PDF В результате должны получить
Отчеты в формате MS Word, RTF, PDF, HTML Отчеты в формате PDF Внутри <xsl:template match ="REPORT"> У первого <fo:block> добавим атрибут break-before="page”
Отчеты в формате MS Word, RTF, PDF, HTML Отчеты в формате PDF Для проверки копируем тэг <REPORT> в файле c:\fop\t1a_data.xml Снова запускаем команду c:\fop\fop.bat -c c:\fop\conf\fop.xconf -xml c:\fop\t1a_data.xml-xsl c:\fop\t1a.xml -pdf c:\fop\t1a.pdf Получаем 2 страницы
Отчеты в формате MS Word, RTF, PDF, HTML Отчеты в формате PDF Теперь мы может приступить к замене полей, которые точно будут встречаться 1 раз внутри тэга <REPORT> Находим значения, которые мы разметили в файле MS Word
Отчеты в формате MS Word, RTF, PDF, HTML Отчеты в формате PDF Заменяем допустим, “zzzzzzz” на <xsl:value-of select="SORGNAME"/> В ближайшем блоке заменяем language="EN-US” на language=“RU” Проверяем: