Re: Цифровая подпись отчётов в PDF-формате
Добавлено: 02 мар 2017, 16:04
Здравствуйте.
В данном контексте - сохранение готового отчета в файл PDF.
Далее, надо определиться, как вы будете экспортировать файлы: вручную из вьювера (каждый файл отдельно) или из кода своего приложения (пакетная обработка).
Также, как у вас хранятся сертификаты пользователей: в хранилище Windows или в виде отдельных файлов ?
Если в виде файлов, то экспорт надо делать только из кода вашего приложения.
При экспорте из вьювера появляется окошко настроек экспорта. Снизу располагается кнопка "Digital Signature" (ЭЦП), при нажатии которой появляется маленькое всплывающее меню с тремя опциями.
Первая галочка включает цифровую подпись файла.
Вторая галочка определяет, как будет выбираться сертификат для подписи.
Если галочка установлена - то в процессе экспорта файла отобразится системное меню (Crypto UI), в котором можно выбрать сертификат из хранилища сертификатов Windows.
Если галочка снята - то активируется третье поле, где надо ввести SubjectName - это или имя сертификата, или имя пользователя из сертификата (атрибут CN), по этому имени будет производиться поиск сертификата в хранилище Windows.
На прилагаемом скриншоте справа изображено системное окошко выбора сертификата на Windows 10. Для других версий windows оно отличается. При экспорте отчета из кода вашего приложения сначала надо построить отчет:
Затем экспортируем отчет. Сертификат тоже можно выбрать вручную:
Хотя обычно при экспорте из кода это делают "тихо", т.е. выбирают сертификат по имени:
Если сертификаты хранятся в отдельных файлах, то сразу передаём нужный сертификат в настройках экспорта:
Спасибо.
Экспорт - это сохранение построенного (отрендеренного) документа в файл другого программного продукта - Word, Excel, AdobeAcrobat и т.п.Что подразумевается под "экспортом" документа? Построение, рендер, печать?
В данном контексте - сохранение готового отчета в файл PDF.
Далее, надо определиться, как вы будете экспортировать файлы: вручную из вьювера (каждый файл отдельно) или из кода своего приложения (пакетная обработка).
Также, как у вас хранятся сертификаты пользователей: в хранилище Windows или в виде отдельных файлов ?
Если в виде файлов, то экспорт надо делать только из кода вашего приложения.
При экспорте из вьювера появляется окошко настроек экспорта. Снизу располагается кнопка "Digital Signature" (ЭЦП), при нажатии которой появляется маленькое всплывающее меню с тремя опциями.
Первая галочка включает цифровую подпись файла.
Вторая галочка определяет, как будет выбираться сертификат для подписи.
Если галочка установлена - то в процессе экспорта файла отобразится системное меню (Crypto UI), в котором можно выбрать сертификат из хранилища сертификатов Windows.
Если галочка снята - то активируется третье поле, где надо ввести SubjectName - это или имя сертификата, или имя пользователя из сертификата (атрибут CN), по этому имени будет производиться поиск сертификата в хранилище Windows.
На прилагаемом скриншоте справа изображено системное окошко выбора сертификата на Windows 10. Для других версий windows оно отличается. При экспорте отчета из кода вашего приложения сначала надо построить отчет:
Код: Выделить всё
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);