Имя: Пароль:
1C
 
Подписать 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.Записать(Поток);
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший