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

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

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

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

xslt --> fop --> pdf

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

xslt --> fop --> pdf

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

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

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

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

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


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

Ничего не заюзал, так и выдаю в HTML
...
Рейтинг: 0 / 0
Как cформировать PDF ?
    #38724334
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В нашем проекте используется MS Office WebApps, для быстрого отображения в вебе документов MSOffice, и он же поддерживает печать в PDF.
Файлы Word у нас генерируются и могут редактироваться, и по достижении определенного этапа, должны стать нередактируемыми, и мы их переделываем в PDF с помощью OfficeWebApps.
OfficeWebApps ставится на отдельном сервере в домене, полностью только веб приложение.
...
Рейтинг: 0 / 0
Как cформировать PDF ?
    #38724384
2acid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор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
Как cформировать PDF ?
    #38724420
vassil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Делаю так:

Создаю 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
Как cформировать PDF ?
    #38724433
Retardust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2acid,
Спасибо большое.
На call ругается. Наверное нужно сначала все дела с репортами настроить согласно доке? Или что-то еще?
...
Рейтинг: 0 / 0
Как cформировать PDF ?
    #38725225
2acid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор2acid,
Спасибо большое.
На call ругается. Наверное нужно сначала все дела с репортами настроить согласно доке? Или что-то еще?

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


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