Подпись файлов цифровой подписью с помощью 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
22 января 2025

Как подключить РЕД БД к генератору отчетов FastReport .NET

Пошаговая инструкция по подключению РЕД БД к генератору отчётов FastReport .NET. Эффективные методы и рекомендации для создания отчётов на основе данных из базы.
20 ноября 2024

Локализация и смена языков в FastReport VCL

FastReport VCL поддерживает 40 языков для локализации интерфейса и позволяет изменять язык на лету через меню или код, без перекомпиляции.
1 ноября 2024

Новые возможности редактора отчетов FastReport VCL

Рассматриваем новые возможности редактора отчетов: выносные линии, подсветка пересекающихся объектов, обновлённые деревья отчетов и данных.