Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как cформировать PDF ? / 21 сообщений из 21, страница 1 из 1
03.10.2013, 12:12
    #38415314
u78
u78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как cформировать PDF ?
Кто нибудь формировал печатные формы в PDF? У меня веб приложение, остро стоит проблема печати форм строгой отчётности.

Пока что просто формирую HTML страницу и предлагаю пользователю её распечатать, но здесь вмешиваются настройки печати браузера - положение страницы, отступы, колонтитулы, масштабирование, в общем беда.

Расскажите кто как выходит из положения?
...
Рейтинг: 0 / 0
03.10.2013, 13:06
    #38415405
13-й Пилигрим
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как cформировать PDF ?
u78,

xslt --> fop --> pdf
...
Рейтинг: 0 / 0
03.10.2013, 13:14
    #38415418
u78
u78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как cформировать PDF ?
13-й Пилигримu78,

xslt --> fop --> pdf

Можно поподробнее? что такое FOP ? он на клиенте работает или на сервере? как из fop в pdf ? нельзя сразу в pdf скажем из xml ?
...
Рейтинг: 0 / 0
03.10.2013, 13:29
    #38415443
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как cформировать PDF ?
u7813-й Пилигримu78,

xslt --> fop --> pdf

Можно поподробнее? что такое FOP ? он на клиенте работает или на сервере? как из fop в pdf ? нельзя сразу в pdf скажем из xml ?
FOP процессор преобразования XML в PDF. С недавних пор (вроде с 2010 версии) входит в состав устанавливаемого Cache.
...
Рейтинг: 0 / 0
03.10.2013, 13:33
    #38415447
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как cформировать PDF ?
Мне понравилось через LaTeX:
http://karataev.nm.ru/cache/csppdf.html
...
Рейтинг: 0 / 0
03.10.2013, 16:21
    #38415780
kolesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как cформировать PDF ?
DAiMorС недавних пор (вроде с 2010 версии) входит в состав устанавливаемого Cache.
Странно, что все помалкивают о zen-reports. Кажется у Алёны неплохо получалось, но видимо в екселевский шаблон все же попроще отдавать данные.
...
Рейтинг: 0 / 0
03.10.2013, 16:26
    #38415795
u78
u78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как cформировать PDF ?
kolesovDAiMorС недавних пор (вроде с 2010 версии) входит в состав устанавливаемого Cache.
Странно, что все помалкивают о zen-reports. Кажется у Алёны неплохо получалось, но видимо в екселевский шаблон все же попроще отдавать данные.

а как отдавать данные в екселевский шаблон? можно чуть поподробнее?
...
Рейтинг: 0 / 0
03.10.2013, 16:49
    #38415852
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как cформировать PDF ?
kolesovСтранно, что все помалкивают о zen-reports.
Там, например, нельзя сунуть в ячейку раздельно два свойства... А уш с форматированием и подавно...
Простенькое что-то - можно.
...
Рейтинг: 0 / 0
03.10.2013, 16:51
    #38415854
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как cформировать PDF ?
u78а как отдавать данные в екселевский шаблон?
Как вариант.
Открываешь шаблон Экселем... Давишь на кнопку "Взять данные"... А там ВБА подключается к Кащею и сам забирает данные.
...
Рейтинг: 0 / 0
03.10.2013, 18:36
    #38416019
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как cформировать PDF ?
Есть объектный генератор файлов формата xml-excel.
Если заинтересует, могу выложить более новую версию.
http://www.sql.ru/forum/814407-2/generaciya-xml-excel-faylov
...
Рейтинг: 0 / 0
03.10.2013, 18:36
    #38416020
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как cформировать PDF ?
Блок А.Н.Есть объектный генератор файлов формата xml-excel.
Если заинтересует, могу выложить более новую версию.
http://www.sql.ru/forum/814407-2/generaciya-xml-excel-faylov Выложить бы на GitHub
...
Рейтинг: 0 / 0
04.10.2013, 10:23
    #38416417
Шваров Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как cформировать PDF ?
u78
а как отдавать данные в екселевский шаблон? можно чуть поподробнее?
Еще можно вот так:
Zen Reports и %XML.Writer для генерации отчётов Excel в Caché
...
Рейтинг: 0 / 0
04.10.2013, 11:08
    #38416491
gr_vl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как cформировать PDF ?
u78,

у нас свой клиент разработан для печати из csp и терминальных приложений.

Требует установки на клиенте, отлично работает под wine и crossover.

Печать разработанных в генераторе отчетов форм (соблюдения всех полей и тд).
Возможно печать составных отчетов и автоматический экспорт в PDF/RTF/XLS.


Григорий
...
Рейтинг: 0 / 0
04.10.2013, 16:41
    #38417148
doublefint
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как cформировать PDF ?
Еще вариант:
u78 просто формирую HTML страницу и предлагаю https://code.google.com/p/wkhtmltopdf/
...
Рейтинг: 0 / 0
20.08.2014, 12:12
    #38724307
Retardust
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как cформировать PDF ?
Как в итоге решили задачу?
У нас такая же появилась. Нужно генерировать pdf на клиенте(и возможно сервере) с заполнением полей в текстовом док-те (договор, например, где большая часть текста не меняется). Параметры вытягиваются из объектов. Возможно ли это делать через zen reports, без использования sql запросов?
Сейчас сделано через HTML, но это конечно очень не удобно. Вид документов может существенно меняться и приходится заново делать верстку, я уж не говорю про колонтитулы (даже забирая html который генерит ворд это всё занимает время).
Задача вроде бы стандартная, кто как делает? Из вариантов:1) zen reports, но пока не понятно как 2) подключиться к какому нибудь js/.net средству типа iText. 3) Latex вот теперь. Но Word не подходит.
Спасибо.
...
Рейтинг: 0 / 0
20.08.2014, 12:19
    #38724316
u78
u78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как cформировать PDF ?
Retardust,

Ничего не заюзал, так и выдаю в HTML
...
Рейтинг: 0 / 0
20.08.2014, 12:29
    #38724334
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как cформировать PDF ?
В нашем проекте используется MS Office WebApps, для быстрого отображения в вебе документов MSOffice, и он же поддерживает печать в PDF.
Файлы Word у нас генерируются и могут редактироваться, и по достижении определенного этапа, должны стать нередактируемыми, и мы их переделываем в PDF с помощью OfficeWebApps.
OfficeWebApps ставится на отдельном сервере в домене, полностью только веб приложение.
...
Рейтинг: 0 / 0
20.08.2014, 12:49
    #38724384
2acid
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как cформировать PDF ?
автор1) zen reports, но пока не понятно как
Например так (вызвать метод Run)
Class tmp.tmpPdf Extends %ZEN.Report.reportPage
{

Parameter DEFAULTMODE = "pdf";

Parameter XSLTMODE = "server";

/// XML that defines the contents of this report.
XData ReportDefinition [ XMLNamespace = " http://www.intersystems.com/zen/report/definition"  ]
{
<report xmlns=" http://www.intersystems.com/zen/report/definition"  name='ResultReport' runonce="true"> 
<call method="GenerateReportXML"/>    
 </report>
}

/// XSlT stylesheets for both HTML and XSL-FO
XData ReportDisplay [ XMLNamespace = " http://www.intersystems.com/zen/report/display"  ]
{
<report xmlns=" http://www.intersystems.com/zen/report/display" 
name='ResultReport' title='test pdf' style='standard'>
<!--
<document width="210mm" height="297mm" marginLeft="10mm" marginRight="10mm" marginTop="5mm" marginBottom="10mm" headerHeight="30mm" referenceOrientation="0">
</document>
-->
<!--
<pageheader>
<focall method="PageHeader"/>
</pageheader >
-->
<body >
<focall method="Body"/>
</body>
</report>
}

/// тело отчета
Method Body(mode) As %GlobalCharacterStream
{
  Set stream=##class(%GlobalCharacterStream).%New()
  Do stream.WriteLine("<fo:block>hello pdf</fo:block>")
  quit stream
}

/// Генерация XML данных отчета
/// Нужно, чтобы что-нибудь было, чтобы сформировался PDF-файл
Method GenerateReportXML() As %GlobalCharacterStream
{
  Set stream=##class(%GlobalCharacterStream).%New()
  Do stream.WriteLine("<runTime>"_$ZConvert($ZDT($H,3),"o","XML")_"</runTime>")
  Quit stream
}

ClassMethod Run(pPath = "") As %Status
{
  if pPath="" set pPath = $ZU(12)_"Temp\test.pdf" 
  set o=..%New()
  set rez = o.GenerateReport(pPath,2)
  quit $$$OK
}

}
...
Рейтинг: 0 / 0
20.08.2014, 13:08
    #38724420
vassil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как cформировать PDF ?
Делаю так:

Создаю ZEN-Reports

устанавливаю Parameter DEFAULTMODE = "xml";/// zui.truck.rep.AccountReport
Class zui.truck.rep.AccountReport Extends %ZEN.Report.reportPage
{

/// Имя приложения, которому принадлежит этот отчет.
Parameter APPLICATION = "p6.zen.Application";

/// Это способ отображения по умолчанию для этого отчета.
Parameter DEFAULTMODE = "xml";

//toxslfo

/// Это опциональная XML область, используемая для отчета.
Parameter REPORTXMLNAMESPACE;

/// ID счета, для которого делается отчет
Property demandId As %Integer(ZENURL = "DemandId");

Property MyOrg As ent.MyOrganization;

/// Этот XML блок описывает логическое содержение этого отчета.
XData ReportDefinition [ XMLNamespace = " http://www.intersystems.com/zen/report/definition"  ]
{
<report xmlns=" http://www.intersystems.com/zen/report/definition"  name="AccountRep" runonce="true" >
<attribute name='runTime' expression='$ZDT($H,3)' />
<attribute name='runBy' expression='$UserName' />

<element name='Aka' expression='..MyOrg.Aka'/>
<element name='Address' expression='..MyOrg.Address'/>
<element name='MailAddress' expression='..MyOrg.MailAddress'/>
<element name='INN' expression='"ИНН: "_..MyOrg.INN'/>
<element name='KPP' expression='"КПП: "_..MyOrg.KPP'/>
<element name='Account' expression='..MyOrg.Account'/>
<element name='BankAka' expression='..MyOrg.Bank.Aka'/>
<element name='Bik' expression='..MyOrg.Bank.Bik'/>
<element name='CorAccount' expression='..MyOrg.Bank.CorAccount'/>
<element name='AccountNo' expression='##class(truck.Pay).GetAccountNoByDemandId(..demandId)' />
<element name='AccountDocDate' expression='##class(p6.Date).LogicalToDisplay(##class(truck.Demand).%OpenId(..demandId).DocDate)'/>
<group name="acc" sql="SELECT Pay->DocNo,Pay->DocDate,Pay->RubSumTotal, Demand->Items, Pay->Payer->Aka As PayerAka from truck.DemandToPay WHERE Demand->ID=?">
<parameter expression='..demandId'/>
<element name='PayerAka' field='PayerAka'/>
<element name='DocNo' field='DocNo'/>
<element name='DocDate' field='DocDate'/>
<element name='Items' field='Items'/>
<element name='Summa1' field='RubSumTotal' />
<element name='Summa2' field='RubSumTotal' expression='..WriteSumma(%val)'/>
<group name="accLine" sql="select OrderNo,Aka,Unit,Qty,Price,RubSum from truck.PayLine where Pay in (select Pay from truck.DemandToPay WHERE Demand->ID=?)">
<parameter expression='..demandId'/>
<element name='OrderNo' field='OrderNo'/>
<element name='Aka' field='Aka'/>
<element name='Unit' field='Unit'/>
<element name='Qty' field='Qty'/>
<element name='Price' field='Price' expression='##class(p6.UrlUtils).ConvertCurrency(%val)'/>
<element name='RubSum' field='RubSum' expression='##class(p6.UrlUtils).ConvertCurrency(%val)'/>
</group>
</group>

</report>
}
}Далее рисую отчет в любом визуальном xslt редакторе
пользуюсь этим http://www.stylusstudio.com/videos/tutorial1/tutorial1.html
но в интернете вроде попадались и бесплатные редакторы
Подставляю туда полученный выше файл XML как источник данных
По окончанию копирую от туда полученный XSLT код.

И копирую его в XData ReportDisplay/// Этот XML блок описывает отображение этого отчета.
/// Это используется для создания XSLT стиля, как для HTML, так и для XSL-FO.
XData ReportDisplay [ XMLNamespace = " http://www.intersystems.com/zen/report/display"  ]
{
<report xmlns=" http://www.intersystems.com/zen/report/display" 
 name="AccountRep" title ="Счет"    >

  <write>
    <![CDATA[ 

                <fo:flow flow-name="xsl-region-body">
                    <fo:block>
                        <fo:block>
                            <fo:block font-size="14pt" font-weight="bold" text-decoration="underline">
                                <fo:block>
                                    <fo:inline font-weight="bold" text-decoration="normal">
  <<<<< ВЫРЕЗАНО >>>>>>>>>>>>

                                                        </fo:block>
                    </fo:block>
                </fo:flow>

     ]]>
  </write>

</report>
}устанавливаю Parameter DEFAULTMODE = "pdf";

Описание краткое... если что будет не получаться - пишите...
...
Рейтинг: 0 / 0
20.08.2014, 13:16
    #38724433
Retardust
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как cформировать PDF ?
2acid,
Спасибо большое.
На call ругается. Наверное нужно сначала все дела с репортами настроить согласно доке? Или что-то еще?
...
Рейтинг: 0 / 0
21.08.2014, 09:48
    #38725225
2acid
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как cформировать PDF ?
автор2acid,
Спасибо большое.
На call ругается. Наверное нужно сначала все дела с репортами настроить согласно доке? Или что-то еще?

Совсем забыл, что нужно расширять системный класс репорта, что не совсем правильно и этот вариант лучше не использовать.
Сейчас бы наверное делал как писал 13-й Пилигрим : xslt --> fop --> pdf
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как cформировать PDF ? / 21 сообщений из 21, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]