Подпись файлов цифровой подписью с помощью FastReport VCL

12.12.2022

Подпись файлов цифровой подписью с помощью FastReport VCL

Без электронного документооборота уже сложно представить нашу жизнь. Удобство таких документов это конечно же они не портятся с течением времени, их сложнее потерять, легко хранить и быстро передавать на любые расстояния. Но как мы все знаем, в силу вступает лишь тот документ, что был подписан.

Электронные подписи – шифры, гарантирующие уникальность и неповторимость, позволяющие однозначно установить авторство и защитить от изменения документа.

Но если подписывать каждый сгенерированный файл PDF, то это может занять много времени. А что делать если у вас генерируется тысяча и более файлов, подписывать их вручную? Конечно же нет. FastReport VCL умеет сам подписывать сгенерированные файлы вашей подписью. Далее мы разберём пример реализации цифровой подписи.

Для наглядности используем маленькое приложение, которое экспортирует файл в PDF, а после подписывает его.

Delphi
procedure TForm1.Button1Click(Sender: TObject);
const
 FR3FileName = 'Signatures.fr3';
var
 PDFExport: TfrxPDFExport;
 Report: TfrxReport;
begin
 Report := TfrxReport.Create(nil);
 try
 Report.LoadFromFile(FR3FileName);
 Report.PrepareReport; 
// загружаем и готовим отчет
 PDFExport := TfrxPDFExport.Create(nil);
 try
 PDFExport.Report := Report;
 PDFExport.ShowDialog := False;
 PDFExport.FileName := ExtractFileName(FR3FileName) + '.pdf';
 Report.Export(PDFExport); 
// экспортируем отчет
 SetInfo(PDFExport); 
// подписываем сгенерированный PDF файл
 finally
 PDFExport.Free;
 end;
 finally
 Report.Free;
 end;
end;
 
procedure TForm1.SetInfo(PDFExport: TfrxPDFExport);
var
 Lookup: TCertificateStoreLookup;
 FS: TfrxFileSignature;
 FSO: Integer;
begin
 Lookup := TCertificateStoreLookup.Create;
 Lookup.IgnoreCase := true;
 Lookup.Subject := 'test'; 
// имя сертификата
 FSO := FileSignatureOptions(
 true, // Detached = true подпись в отдельном файле
 false, // Chain = false цепочка сертификата
 true, // OnlyGOST= true сертификат ГОСТ
 true, // DebugLog = true информация при отладке
 false); // PFX = false включается, если задан не ГОСТ сертификат
 
 FS := TfrxFileSignature.Create(
 Lookup,
 PDFExport.FileName, // Название PDF файла
 PDFExport.FileName + '.sig', // название сгенерированной подписи
 '',
 FSO);
 
 FS.Sign;
 FS.Free;
 Lookup.Free;
end;

После написания программы перейдем к ее запуску.

Окно тестовой программы

После запуска нажимаем на кнопку, если КриптоПро потребует ввести пароль, то вводим его. Затем получаем подписанный PDF файл с файлом подписи:

Полученные файлы после успешного подписания документа

Стоит проверить корректность подписания файла. Для этого переходим на сайт https://crypto.kontur.ru/verify.

Следующим шагом добавляем наш сгенерированный pdf файл и его подпись.

Проверка подписи документа

Этот скриншот означает, что PDF файл прошел проверку на подпись.

Таким простым и незамысловатым способом мы получили корректно экспортированный и подписанный PDF файл с помощью FastReport VCL.

VCL VCL Lazarus Lazarus FastReport FastReport PDF PDF Delphi Delphi
21 апреля 2026

Использование водяных знаков в FastReport VCL

В статье подробно рассмотрели функционал добавления водяных знаков в FastReport VCL — как через визуальный интерфейс, так и программно, с помощью кода на Delphi и в скриптах отчётов.
20 апреля 2026

Подробный обзор возможностей библиотеки FastGrid

Обзор библиотеки FastGrid для VCL и Lazarus: визуализация, редактирование и структурирование данных. Сортировка, фильтрация, группировка, удобные редакторы данных — всё в одной статье!
17 апреля 2026

Новая система валидации отчетов в FastReport VCL

В этой статье мы расскажем, как работает проверка отчетов в FastReport VCL, как её настроить, как писать собственные правила на примерах и поделимся интересными нововведениями.

Не является публичной офертой
© 1998-2026 ООО «Быстрые отчеты»