Сразу замечу, что использование виртуального принтера (вроде PDFCreator) невозможно, т.к. печать и рассылка писем идет на сервере (не под клиентом), и команда ТабличныйДокумент.Напечатать() недоступна для использования.
Весь код выполняется на сервере. Вначале получим "ТабличныйДокумент" внешней печатной формы.
ТабличныйДокумент = ПечатьИзВПФ("Заявка клиента","ЗаявкаКлиента");
Функция ПечатьИзВПФ(ИмяВП, Макет) Экспорт
СсылкаНаВПФ = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяВПФ);
Если СсылкаНаВПФ.Пустая() Тогда
Сообщить("В справочнике ""Дополнительные отчеты и обработки"" не найдена внешнюю печатную форму с наименованием '" + ИмяВПФ + "'");
Возврат "";
КонецЕсли;
Попытка
ОбработкаОбъект = ДополнительныеОтчетыИОбработки.ОбъектВнешнейОбработки(СсылкаНаВПФ);
Исключение
Сообщить("Не удалось напечатать """ + ИмяВПФ + "'"". Ошибка создания объекта дополнительной ПФ");
Возврат "";
КонецПопытки;
МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(СсылкаНаДокумент);
ТабличныйДокумент = "";
Попытка
ТабличныйДокумент = ОбработкаОбъект.СформироватьПечатнуюФорму(МассивОбъектов,Макет);
Исключение
Сообщить("Не удалось напечатать """ + ИмяВПФ + "'""." + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
Возврат ТабличныйДокумент;
КонецФункции
В модуле печатной формы должна быть экспортная процедура СформироватьПечатнуюФорму(МассивОбъектов,Макет)
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "ЗаявкаКлиента");
Если ПечатнаяФорма <> Неопределено Тогда
ПечатнаяФорма.ТабличныйДокумент = СформироватьПечатнуюФорму(МассивОбъектов,"ЗаявкаКлиента");
ПечатнаяФорма.СинонимМакета = НСтр("ru = 'Заявка клиента'");
КонецЕсли;
КонецПроцедуры
Функция СформироватьПечатнуюФорму(МассивОбъектов,МакетДляПечати) Экспорт
Если МакетДляПечати = "ЗаявкаКлиента" Тогда
Возврат СформироватьПечатнуюФормуЗаявкаКлиента(МассивОбъектов,МакетДляПечати);
КонецЕсли;
КонецФункции
Функция СформироватьПечатнуюФормуЗаявкаКлиента(МассивОбъектов,МакетДляПечати)
Док = МассивОбъектов[0];
ТабличныйДокумент = Новый ТабличныйДокумент;
Макет = ПолучитьМакет(МакетДляПечати);
Возврат ТабличныйДокумент;
КонецФункции
Сохраним "ТабличныйДокумент" в файл pdf
ИмяВременногоФайла = КаталогВременныхФайлов() + СтрЗаменить(ИмяФайла," ","_") + ".pdf";
ТабличныйДокумент.Записать(ИмяВременногоФайла, ТипФайлаТабличногоДокумента.PDF);
На сервере должна быть установлена программа ImageMagick и Ghostscript
В скрипте мы запускаем ImageMagick, а Ghostscript является вспомогательной программой ее использует сама ImageMagick.
Иногда требуется установка переменной среды: setx MAGICK_CODER_MODULE_PATH "C:\Program Files\gs\gs10.03.0\lib"
Проверить переменную среды: echo %MAGICK_CODER_MODULE_PATH%
Устанавливаем нужное расширение у "ИмяВременногоФайла_img" (jpg,gif,png и прочие).
ПаузаВСекундах нужна, чтобы если мы хотим дальше использовать файл "ИмяВременногоФайла_img", программа ImageMagick успела сохранить результат на диск.
ИмяВременногоФайла_img = ИмяВременногоФайла + ".jpg";
КонвертироватьPDFtoImg(ИмяВременногоФайла,ИмяВременногоФайла_img);
Процедура КонвертироватьPDFtoImg(ИмяВременногоФайла,ИмяВременногоФайла_img) Экспорт
СтрокаЗапуска = """C:\Program Files (x86)\ImageMagick-7.1.0-portable-Q16-x64\convert.exe"" -density 300 -trim "+ИмяВременногоФайла+" -quality 100 "+" "+ИмяВременногоФайла_img;
ЗапуститьПриложение(СтрокаЗапуска,,Истина,Неопределено);
ПаузаВСекундах(5);
КонецПроцедуры
Функция ПаузаВСекундах(СекундЗадержки) Экспорт
Если СекундЗадержки>0 Тогда
scr = Новый COMОбъект("WScript.Shell");
scr.Run("TIMEOUT -T "+Число(СекундЗадержки)+" -NOBREAK",0,1);
КонецЕсли;
КонецФункции
Тестировал:
1С:Комплексная автоматизация 2 (2.4.13.209)
Платформа 1С:Предприятие 8.3 (8.3.18.1646)