Показаны сообщения с ярлыком FastReport. Показать все сообщения
Показаны сообщения с ярлыком FastReport. Показать все сообщения

18 мая 2023

Официальная коллекция шаблонов для FastReport

    Компания Быстрые отчеты открыла сайт с коллекцией шаблонов для генератора отчетов FastReport. Коллекция содержит шаблоны для более чем 50 документов, форма которых утверждена Росстатом, Госкомстатом или Центральным Банком России. Каждый шаблон загружен в двух форматах: fr3 (для Delphi) и frx (для .NET). Дополнительный приятный бонус – шаблоны можно скачать в формате PDF. Хотя сайт и называется "МоиОтчеты Магазин", но все шаблоны можно скачать бесплатно. Может быть, пока бесплатно...
Магазин шаблонов для FastReport
    Подобная коллекция шаблонов для FastReport – это хорошая идея и ее нужно было реализовать уже давно. На протяжении десятков лет тысячи программистов тратили свое время на создание одинаковых шаблонов. Теперь его можно сэкономить, воспользовавшись готовыми шаблонами. Но хотелось бы больше категорий и, чтобы география этой коллекции не ограничивалась одной страной.

01 апреля 2022

FastLinux – operating system must be fast

    Сегодня, 1 апреля 2022 года, компания Fast Reports анонсировала выпуск FastLinux Server. FastLinux Server – это операционная система, которая отвечает всем требованиям современных предприятий, обладает высокой надёжностью, быстродействием и устойчивой работой при любых нагрузках. FastLinux – это единственный дистрибутив Linux оптимизированный для формирования и хранения документов. Его главной особенностью является наличие встроенной специальной версии FastReport Corporate Server.

14 июня 2021

Цифровая подпись PDF документов созданных в FastReport

    С ростом популярности обмена документами в электронном виде тема защиты их от подделки становится все более важной. На прошлой неделе я писал о добавлении в PDF документ цифровой подписи с использованием Foxit Quick PDF Library. Сегодня хочу рассказать о возможности цифровой подписи PDF документов, созданных с использованием генератора отчетов FastReport.

22 марта 2021

Использование TrueType шрифтов Microsoft в FastReport FMX под Linux

    Шрифты, устанавливаемые на компьютер вместе с продуктами Microsoft, плотно вошли в нашу жизнь. Их использование в документах – это давно уже не дань моде или привычке. Это требование, закрепленное в наших государственных стандартах. Например, шрифт Times New Roman упоминается в "инструкции по оформлению документов с использованием компьютерных технологий в органах государственного управления и иных государственных организациях". Дистрибутивы Linux не поставляется с проприетарными шрифтами Microsoft. Но, тогда как заставить исполняемую под Linux программу создавать в FastReport документы, соответствующие высоким государственным стандартам?

02 марта 2021

FastReport меняет лицензию

    Мой интерес к Linux и комментарии к статье о создании документов в формате PDF подтолкнули меня к экспериментам с FastReport FMX. Задумавшись о получении на него лицензии я попытался разобраться, что поменялось в лицензировании генератора отчетов FastReport за последние 5-6 лет пока я им не пользовался? А ни чего. Но, по информации из надежного источника следует, что мы в шаге от новых правил лицензирования продуктов компании FastReport. Сегодня я решил поделиться этими слухами, так как нашел им подтверждение в тексте лицензионного соглашения FastReport VCL. Поэтому у меня для вас есть две новости. Как говорится, "одна плохая, вторая..."

22 февраля 2021

Создание PDF файла в Linux без графической оболочки используя FastReport FMX

    В комментариях к статье "Создание PDF файла в Windows и Linux" читатели рассказали о использовании для создания документов в формате PDF генератора отчетов FastReport. У меня уже был подобный опыт, и я даже писал об этом 10 лет тому назад. Сейчас я не стал приводить пример с FastReport, так как моя статья была написана еще до выхода FastReport FMX версии 2.8, в которой была добавлена поддержка FmxLinux. Сегодня я сделал несколько первых экспериментов с FastReport FMX под Ubuntu Desktop 20.04. Он действительно работает под Linux! Запускать мой тест экспорта в PDF я решил, как и в прошлой статье, не под Ubuntu Desktop, а под Ubuntu Server.

21 апреля 2014

FastReport VCL 5. Улучшение интерактивности

   Интерактивные отчеты позволяют определить в отчёте действие, которое произойдет при щелчке мыши на каком-нибудь объекте отчета в окне предварительного просмотра. В предыдущих версиях FastReport существовало несколько способов сделать отчет интерактивным.

11 апреля 2014

FastReport. PDF-экспорт и встраивание шрифта

   В списке новшеств FastReport VCL 5 значится "В PDF-экспорт улучшено встраивание шрифтов: вместо целого шрифта встраивается только используемое в отчёте подмножество символов шрифтов. Это позволяет значительно сократить размер файла". В своих программах я часто работаю с документами в PDF-формате, поэтому вопрос размера документа, экспортированного из FastReport в PDF-файл меня интересует.

04 апреля 2014

FastReport VCL 5. Мы уже не ждали, а он припёрся

   Вчера вечером, разгребая спам, я наткнулся на письмо от FastReports, Inc с темой "Внезапно релиз FastReport VCL 5". О как! Мы уже и не ждали, а он припёрся. Тут же в голове возникла знаменитая фраза, которую сказал дедушка Ленин 7 ноября 1917 года: "Товарищи! Рабочая и крестьянская революция, о необходимости которой всё время говорили большевики, свершилась! ". Спросите: "Почему такая реакция? ". Для тех, кто не в теме расскажу предысторию этого события.

15 апреля 2011

FastReport. Вывод данных в внизу страницы

   Недавно коллега обратился с вопросом "Как в FastReport сделать так, чтобы бэнд с данными выводился внизу страницы?".
   Первая моя мысль была положить SubReport на PageFooter. Но такое решение естественно не сработало, и я стал пробовать управлять положением бэнда на странице с помощью скрипта. В результате я нашел решение данного вопроса с помощью дополнительного бэнда и одной строчки скрипта. Поясню на примере.
   Например, вверху отчета нам нужно вывести какую-то информацию (добавляем на страницу бэнд MasterData1) и внизу отчета нам нужно вывести какую-то информацию (добавляем на страницу бэнд MasterData2). А между ними положим еще один бэнд (MasterData3), который заполнит пространство между MasterData1 и MasterData2. Его не будем подключать к данным, а просто укажем количество строк RowCount = 1.
   В скрипте, при старте отчета зададим размер MasterData3:

MasterData3.Height := Engine.PageHeight - MasterData1.Height * MasterData1.RowCount – MasterData2.Height * MasterData2.RowCount

т.е., от высоты страницы отнимаем высоту бэндов с данными. Высоту бэндов с данными вычисляем следующим образом: высоту одной строки бэнда умножаем на количество строк, которые будут в нём выводиться. У меня здесь в скрипте количество строк – это RowCount, а в примере отчета для моего коллеги я использовал количество строк в запросе (DataSet.RecordCount).
   Вот такими нехитрыми манипуляциями мне удалось решить поставленную задачу.
Может быть, вы знаете способ проще?

13 февраля 2011

Сохранение в базу данных отчета FastReport в формате PDF

   Недавно пришлось писать DLL, одна из функций которой должна была:
1. сформировать отчет в FastReport;
2. экспортировать отчет в файл PDF-формата и сохранить его в базе данных;
3. возвратить идентификатор сохраненного в базе данных файла.
Предположим, что исходная структура таблицы для хранения файла в базе данных была такая (MS SQLServer 2000):
CREATE TABLE X.FILES (
  ID BIGINT IDENTITY NOT NULL,
  FILE_BODY IMAGE NULL,
  CONSTRAINT PK_FILES PRIMARY KEY (ID)),
где FILE_BODY – это поле, в которое сохраняется файл, а ID – идентификатор файла.
   Для начала я создал процедуру, которая будет вставлять файл в базу данных и возвращать идентификатор вставленного файла.
CREATE PROCEDURE X.InsertFile
 @FILE image,
 @ID bigint OUTPUT
AS
 INSERT INTO X.FILES(FILE_BODY) VALUES(@FILE)
 SET @ID = SCOPE_IDENTITY()
GO
   Потом сел писать код DLL. В Delphi вся работа с файлами реализована с помощью потоков, поэтому я немного удивился, когда оказалось, что метод Export у TfrxReport экспортирует отчет только в файл (честно сказать, я ожидал увидеть, что-то в стиле ExportToStream). Т.е. вместо прямой передачи отчета через поток в базу данных, необходимо было сначала сохранить отчет во временный файл, а потом этот файл загрузить в базу данных. Мне это не понравилось, т.к. файловые операции (сначала записи, потом чтения) должны были хоть немного, но тормозить работу. Но нужно было срочно отдать DLL, поэтому я не стал разбираться с экспортом и сделал через файл:

...
 db: TSDDatabase; // база данных SQLDirect
 spInsertFile: TSDStoredProc; // вызов X.InsertFile
 frxReport: TfrxReport;
 frxPDFExport: TfrxPDFExport;
...

Function GetDoc(const sDotName: String; ...): Integer;
begin
 Result := -1;
 // загружаем шаблон отчета
 If frxReport.LoadFromFile(sDotName)
  then begin
   // устанавливаем параметры отчета
   ...
   If frxReport.PrepareReport
    then try
     // получаем имя временного файла
     frxPDFExport.FileName := GetTempFileName;
     Try
      // экспортируем отчет во временный файл
      frxReport.Export(frxPDFExport);
      // загружаем PDF-файл в параметр процедуры
      // из временного файла
      spInsertFile.Params[1].LoadFromFile(frxPDFExport.FileName, ftBlob);
     Except
      on E: Exception do
       WriteErrorMessage(E.Message);
     End;
     // сохраняем PDF-файл в базу данных
     Try
      db.StartTransaction;
      spInsertFile.ExecProc;
      db.Commit;
      Result := spInsertFile.Params[2].AsInteger;
     Except
      on E: ESDEngineError do
       begin
        db.Rollback;
        WriteErrorMessage(E.Message);
       end;
     End;
    Finally
     // удаляем временный файл
     DeleteFile(frxPDFExport.FileName)
    End
    else WriteErrorMessage('Ошибка подготовки отчета')
  end
  else WriteErrorMessage('Файл шаблона не найден')
end;

   После передачи DLL другому программисту, мысли о лишних файловых операциях при сохранении отчета в базу через временный файл, не давала мне покоя. Вечером, не найдя решения в документации по FastReport, я, прежде чем смотреть исходный код экспорта, решил еще раз пройтись по методам и свойствам экспорта. Глаз сразу же зацепился за свойство Stream. Я создал для этого свойства поток и метод Export у TfrxReport выгрузил отчет не в файл, а в поток.

Function GetDoc(const sDotName: String; ...): Integer;
begin
 Result := -1;
 // загружаем шаблон отчета
 If frxReport.LoadFromFile(sDotName)
  then begin
   // устанавливаем параметры отчета
   ...
   If frxReport.PrepareReport
    then begin
     Try
      Try
       // создаём поток в памяти
       frxPDFExport.Stream := TMemoryStream.Create;
       // экспортируем отчет в поток
       frxReport.Export(frxPDFExport);
       // загружаем PDF-файл в параметр процедуры
       // из потока в памяти
       spInsertFile.Params[1].LoadFromStream(frxPDFExport.Stream, ftBlob);
      Except
       on E: Exception do
        WriteErrorMessage(E.Message);
      End;
     Finally
      frxPDFExport.Stream.Free;
     End;
     // сохраняем PDF-файл в базу данных
     Try
      db.StartTransaction;
      spInsertFile.ExecProc;
      db.Commit;
      Result := spInsertFile.Params[2].AsInteger;
     Except
      on E: ESDEngineError do
       begin
        db.Rollback;
        WriteErrorMessage(E.Message);
       end;
     End;
    end
    else WriteErrorMessage('Ошибка подготовки отчета')
  end
  else WriteErrorMessage('Файл шаблона не найден')
end;

   Часто решение задачи лежит на поверхности и нет нужды копаться в чужом коде. Нужно лишь быть внимательным и никогда не сдавайтесь – "ищите и обрящите".

16 сентября 2010

Экономия при покупке FastReport 5

   Компания FastReport уже включила в обновленный для партнеров прайс-лист цены на 5-ю версию генератора отчетов FastReport. Проанализируем стоимость single-лицензии на FastReport VCL (цены в российских рублях):

РедакцияFastReport 4FastReport 5Рост цены
 Basic 690 9901.43
 Standard259035901.39
 Professional 359049901.39
 Enterprise699097901.40

   Как видим, с выходом новой версии цена на FastReport вырастет почти в полтора раза! Для владельцев лицензий на FastReport 3 и FastReport 4 предусмотрены специальные цены на upgrade: владельцы лицензии FastReport 4 могут проапгрейдить ее до 5-й версии за полцены, а владельцы лицензии FastReport 3 за три четвертых от цены. Тем, кто планирует купить FastReport 5, но не имеет лицензии на FastReport 3 или FastReport 4, рост цен вообще не страшен (если конечно не тормозить) – существует законный способ существенно сэкономить, немного "надув" производителя.
   Рассказываю. У компании FastReport есть принцип – бесплатное полугодичное обновление продуктов на любую новую версию той же самой редакции (так было в 2006-м году, когда вышел FastReport 4). Для тех, кто не догадался, рассказываю дальше. Ранее было объявлено, что FastReport 5 будет выпущен осенью 2010 года (т.е. до релиза уже осталось меньше полугода). А это значит, что, купив FastReport 4 сейчас, можно бесплатно получить лицензию на FastReport 5. А это очень существенная экономия :-)
   P.S. Надеюсь, что рост цен на FastReport обусловлен хорошей реализацией нового функционала, а не тем, что "очень нужны деньги".

14 июня 2010

FastReport VCL 5: Объединение дублирующихся значений

   Компания Fast Reports обещает осенью 2010 года выпустить FastReport VCL 5. Из всех нововведений пятой версии меня наиболее заинтересовало "объединение дублирующихся значений". Это связано с тем, что за несколько дней до того, как я узнал о возможностях 5-й версии FastReport VCL, я делал отчет, в котором, если ФИО повторялось в соседних строках, то эти строки первого столбца должны были объединяться в одну строку. Думаю, многие делали, что-либо подобное:
   В текущей версии FastReport VCL это без скрипта сделать нельзя. У объекта "Текст" есть свойство " SuppressRepeated", но оно только позволяет скрывать повторяющиеся значения. При этом в FastReport.NET у объекта "Текст" есть свойство "Duplicates", которое может иметь одно из следующих значений:
• Показывать (Show) – показывать повторяющиеся значения;
• Прятать (Hide) – прятать объект с повторяющимся значением;
• Очищать (Clear) – очищать текст в объекте, но показывать сам объект;
• Объединять (Merge) – объединять объекты с одинаковыми значениями.
   Эта вопиющая несправедливость будет исправлена в FastReport VCL 5! В пятой версии, по аналогии с .NET, будет несколько режимов SuppressRepeated.

21 апреля 2010

Fast Reports переманивает клиентов у конкурентов

   Когда-то давно, на заре человечества, единственным и неповторимым генератором отчетов для Delphi был QuickReport (про ReportSmith даже вспоминать не будем). Он много лет входил в поставку Delphi и его изначально использовали все. Поработав с QuickReport и устав регулярно вспоминать "матерей его разработчиков" программисты стали искать ему альтернативу. Кто то пытался сам улучшить QuickReport, кто то стал генерировать отчеты в MS Word/Excel (например, я), кто то, в надежде на лучшее, украл или купил другие генераторы Report Builder или Rave Reports (или даже монстра по имени Crystal Reports), а кто то стал писать свой генератор отчетов. Одним из тех, кого не устроил QuickReport и кто начал писать свой генератор, был Александр Цыганенко – автор FastReport. Думал ли Александр в далеком 1998 году, что его генератор станет лидером рынка?
   За последние десять лет ситуация изменилась – генераторов отчетов, которые могут быть использованы в Delphi, написано уже много и на любой вкус. Поэтому рынок генераторов отчетов уже насытился и теперь начинается новая стадия борьбы за старых клиентов. Стадия, в которой главная роль отводится не программистам, а маркетологам. Компания Fast Reports, опередив своих конкурентов по функциональным возможностям их генераторов отчетов, решила дожать тех, кто сомневался в его покупке и начала акцию по переманиванию пользователей других коммерческих генераторов отчетов на FastReport. В обмен на лицензию конкурента они предлагают скидку в 20% на FastReport 4 VCL, FastReport VCL OLAP Pack, FastReport.NET и FastReport Studio. VCL-версию FastReport можно получить в обмен на Report Builder, Rave Reports, Crystal Reports и ActiveReports.
   Обидно за QuickReport. Его, классика жанра, вообще обделили вниманием. Но, думаю – это "заслужено", ни кто на просторах бывшего СССР не покупал это убожество программисткой мысли.