Сохранение отчета в PDF формате
Добавлено: 11 Апрель 2022, 13:34
				
				Хороший вариант. Но есть возможность у пользователя удалить его. И не работает на серверных версиях. Некоторые работают по rdp, а там такого варианта нет.
Место общения программистов, форум разработчиков БД на Clarion
https://forum.clarionlife.net/
Хороший вариант. Но есть возможность у пользователя удалить его. И не работает на серверных версиях. Некоторые работают по rdp, а там такого варианта нет.
Это уже не пользователь - а вредитель какой-то !

Код: Выделить всё
   Printer{PropPrint:Device} = 'Microsoft Print to PDF'
   If Clip(Upper(Printer{PropPrint:Device})) = Upper('Microsoft Print to PDF') then Loc:OK = True.
   If Loc:OK = False
      Printer{PropPrint:Device} = 'Adobe PDF Printer'
      If Clip(Upper(Printer{PropPrint:Device})) = Upper('Adobe PDF Printer') then Loc:OK = True.
   end
   If Loc:OK = False
      Printer{PropPrint:Device} = 'PDF Printer'
      If Clip(Upper(Printer{PropPrint:Device})) = Upper('PDF Printer') then Loc:OK = True
      else
         Message(' Для экспорта отчёта в PDF установите принтер: Microsoft Print to PDF|' & |
            ' или переименуйте сторонний PDF принтер в: PDF Printer','У нас проблема !',Icon:Exclamation,'&1. Закрыть')      
      end
   end
   
   If Loc:OK = True then И вот тут уже понеслась печать на PDF принтер и т.д. ...
Да, на старых версиях Windows Server нет такого, но на более новых - есть (смотрел сейчас у пользователя), но ведь можно использовать при RDP локальный ресурс - нужный нам Microsoft Print to PDF
Да, вполне достаточно, идея понятнаИгорь Столяров писал(а): 11 Апрель 2022, 14:05 ...На самом деле, как человек спросил - так ему и ответили.
Разумеется, когда привязываешься к определенному имени принтера, нужно проверять существует ли он на момент печати.Игорь Столяров писал(а): 11 Апрель 2022, 14:05 По хорошему, конечно, надо проявить эрудицию и посмотреть всех....
Сейчас это модно называть Искусственный Интеллект !


Я так и сделал. Некий ИИ. Лезет в реестр и смотрит принтеры со строчкой "PDF".Игорь Столяров писал(а): 11 Апрель 2022, 14:05 По хорошему, конечно, надо проявить эрудицию и посмотреть всех.
Можно поподробнее? Совсем относительно недавно искал. Не было такого.SergioRaguzini писал(а): 11 Апрель 2022, 14:14 Да, на старых версиях Windows Server нет такого, но на более новых - есть (смотрел сейчас у пользователя),
Не судите строго - этому коду уже почти 20 лет. И всё равно эти вопросы спрашивают ...RaFaeL писал(а): 11 Апрель 2022, 15:47 А вот предложению переименовать принтер до искусственного интеллекта очень далеко

У пользователя - Windows Server 2012 и работает он по RDP, вчера заходил в его "Принтеры" и видел Microsoft Print to PDF, как будет оказия уточню - этот принтер "родной" или "локальный ресурс" от его Windows 10

Код: Выделить всё
  !If Exists(wFile_) then Loc:OKSave = True.
  
   If Exists(wFile_) then Loc:OKSave = True
   else
      Loop 10 times
         Yield; Yield; Yield; Yield; Yield;
         Win::Sleep(500)  ! Ждёмс 0.5 сек.
         If Exists(wFile_) then Loc:OKSave = True; Break.
      end
   end




Видал это, костыли для обхода очередной проблемы в рантайме с11. В с6 все норм.Игорь Столяров писал(а): 15 Май 2024, 22:07 Мы используем для удаления WMF листов отчёта функцию для быстрого удаления файлов:
https://gist.github.com/CarlTBarnes/e5d ... ac9c432202