Цифровая подпись отчётов в PDF-формате

Обсуждение Stimulsoft Reports.NET
Ivan
Сообщения: 641
Зарегистрирован: 10 авг 2006, 05:40
Откуда: Stimulsoft Office

Re: Цифровая подпись отчётов в PDF-формате

Сообщение Ivan »

Здравствуйте.
Что подразумевается под "экспортом" документа? Построение, рендер, печать?
Экспорт - это сохранение построенного (отрендеренного) документа в файл другого программного продукта - Word, Excel, AdobeAcrobat и т.п.
В данном контексте - сохранение готового отчета в файл PDF.

Далее, надо определиться, как вы будете экспортировать файлы: вручную из вьювера (каждый файл отдельно) или из кода своего приложения (пакетная обработка).
Также, как у вас хранятся сертификаты пользователей: в хранилище Windows или в виде отдельных файлов ?
Если в виде файлов, то экспорт надо делать только из кода вашего приложения.

При экспорте из вьювера появляется окошко настроек экспорта. Снизу располагается кнопка "Digital Signature" (ЭЦП), при нажатии которой появляется маленькое всплывающее меню с тремя опциями.
Первая галочка включает цифровую подпись файла.
Вторая галочка определяет, как будет выбираться сертификат для подписи.
Если галочка установлена - то в процессе экспорта файла отобразится системное меню (Crypto UI), в котором можно выбрать сертификат из хранилища сертификатов Windows.
Если галочка снята - то активируется третье поле, где надо ввести SubjectName - это или имя сертификата, или имя пользователя из сертификата (атрибут CN), по этому имени будет производиться поиск сертификата в хранилище Windows.
На прилагаемом скриншоте справа изображено системное окошко выбора сертификата на Windows 10. Для других версий windows оно отличается.
menu1.png
menu1.png (54.68 КБ) 7388 просмотров
При экспорте отчета из кода вашего приложения сначала надо построить отчет:

Код: Выделить всё

StiReport report = new StiReport();
report.Load("test.mrt");
report.Render();
Затем экспортируем отчет. Сертификат тоже можно выбрать вручную:

Код: Выделить всё

StiPdfExportSettings pdfSettings = new StiPdfExportSettings();
pdfSettings.UseDigitalSignature = true;
pdfSettings.GetCertificateFromCryptoUI = true;
report.ExportDocument(StiExportFormat.Pdf, "test.pdf", pdfSettings);
Хотя обычно при экспорте из кода это делают "тихо", т.е. выбирают сертификат по имени:

Код: Выделить всё

StiPdfExportSettings pdfSettings = new StiPdfExportSettings();
pdfSettings.UseDigitalSignature = true;
pdfSettings.GetCertificateFromCryptoUI = false;
pdfSettings.SubjectNameString = "your_subjectName";
report.ExportDocument(StiExportFormat.Pdf, "test.pdf", pdfSettings);
Если сертификаты хранятся в отдельных файлах, то сразу передаём нужный сертификат в настройках экспорта:

Код: Выделить всё

StiPdfExportSettings pdfSettings = new StiPdfExportSettings();
pdfSettings.UseDigitalSignature = true;
pdfSettings.CertificateData = File.ReadAllBytes("certificate.pfx");
pdfSettings.CertificatePassword = "your_password";
report.ExportDocument(StiExportFormat.Pdf, "test.pdf", pdfSettings);
Спасибо.
Aussoky60
Сообщения: 1
Зарегистрирован: 21 авг 2020, 15:07

Re: Цифровая подпись отчётов в PDF-формате

Сообщение Aussoky60 »

Eugene A. Bykov писал(а): 15 окт 2007, 10:34 Добрый день, подскажите, пожалуйста, имеется ли в планах на будущее в генераторе отчётов добавить возможность цифровой подписи документов, экспортированных, в частности, в ЭЦП PDF? Если да, то в какие ориентировочно сроки? Если нет, подскажите, пожалуйста, в какой части или частях исходных кодов следует искать код для доработки, отвечающий за настройку параметров экспорта в PDF?
Спасибо!
О, мне поставили задачу тоже найти такое решение для ЭЦП, удалось?
Aleksey
Сообщения: 2787
Зарегистрирован: 22 апр 2010, 06:57

Re: Цифровая подпись отчётов в PDF-формате

Сообщение Aleksey »

Здравствуйте,

Вы можете найти решение задачи в предыдущих ответах.

Спасибо.
Ответить