Сохранение отчета в 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