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