|
|
|
Подписать PDF через Поток (на входе ДД) | ☑ | ||
|---|---|---|---|---|
|
0
RomaH
19.06.24
✎
15:43
|
ФайлPDF - двоичные данные
ИмяФайла = ПолучитьИмяВременногоФайла("pdf");
ФайлPDF.Записать(ИмяФайла);
Поток = Новый ПотокВПамяти;
Запись = Новый ЗаписьДанных(Поток);
Запись.Записать(ФайлPDF);
Запись.Закрыть();
Поток.Перейти(0, ПозицияВПотоке.Начало);
ДокументPDF = Новый ДокументPDF();
//ДокументPDF.Прочитать(Поток);
ДокументPDF.Прочитать(ИмяФайла);
КоличествоСтраниц = ДокументPDF.КоличествоСтраниц();
ДанныеСертификата = ДанныеСертификата(СертификатМО);
Штамп = Штамп(ДанныеСертификата.Наименование, ДанныеСертификата.ДанныеСертификата);
МенеджерКриптографии = Новый МенеджерКриптографии(ДанныеСертификата.ИмяПрограммы, "", ДанныеСертификата.ТипПрограммы);
МенеджерКриптографии.ПарольДоступаКЗакрытомуКлючу = "";
Сертификат = Новый СертификатКриптографии(ДанныеСертификата.ДанныеСертификата);
//МенеджерКриптографииВрача.Подписать(Новый ДвоичныеДанные(ПутьКФайлу),СтрЗаменить(ПутьКФайлу, ".pdf", "2.sig"),Сертификат);
ПодписьPDF = Новый ОписаниеПодписиPDF;
ПодписьPDF.Имя = "ПодписьОрганизации";
ПодписьPDF.Сертификат = Сертификат;
ПодписьPDF.ТипПодписи = ТипПодписиPDF.Утверждающая;
ПодписьPDF.БлокировкаДокумента = Истина;
ПодписьPDF.Верх = 297-18;
ПодписьPDF.Лево = 100;
ПодписьPDF.НомерСтраницы = КоличествоСтраниц;
ДокументPDF.ДобавитьПодпись(МенеджерКриптографии, ПодписьPDF, Штамп);
//ДокументPDF.Записать(Поток);
ДокументPDF.Записать(ИмяФайла);
ФайлPDF = Поток.ЗакрытьИПолучитьДвоичныеДанные();
Если делаю через поток, то на ДокументPDF.Записать(Поток); получаю ошибку "Неверный формат", а через файл все красиво |
|||
|
1
Garykom
19.06.24
✎
15:59
|
Куски говнокода, надерганные хз откуда
|
|||
|
2
spiller26
19.06.24
✎
16:38
|
(0) Зачем ты используешь Поток?
Поток — этот объект представляет собой поток данных из которого можно читать и/или записывать в него данные. Данный объект не имеет конструктора, а получить экземпляр объекта можно при помощи различных методов других объектов. |
|||
|
3
Мультук
19.06.24
✎
17:14
|
(0)
//ФайлPDF === Двоичные данные Поток = Новый ПотокВПамяти; Запись = Новый ЗаписьДанных(Поток); Запись.Записать(ФайлPDF); Запись.Закрыть(); Поток.Перейти(0, ПозицияВПотоке.Начало); ДокументPDF = Новый ДокументPDF(); ДокументPDF.Прочитать(Поток); //А прочитать то работает ?? //Здесь всякое про подпись //Разве не нужно снова вернуть позицию на начало ??????? Поток.Перейти(0, ПозицияВПотоке.Начало); ДокументPDF.Записать(Поток); |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |