Imagius: конвертация PDF в картинку (Native Win 32/64)

Внешняя компонента 1С:Предприятие для конвертации PDF файлов в картинки без использования дополнительных программ. Работает на сервере и в тонком клиенте.

Для рендеринга PDF в компоненту передаётся путь к файлу. В результате можно получить либо несколько файлов картинок (для каждой страницы), либо двоичные данные указанной страницы. И обработать эти данные в оперативной памяти без записи на диск.

Компонента работает как на x86, так и x86_64 платформах, в режиме СервераТонкого клиента. Распространяется в виде пакетного файла, который содержит в себе все версии компоненты.

Пример работы с компонентой на сервере и на клиенте:

#Область ТестДляКлиента

&НаКлиенте
Процедура ТестДляКлиента(Команда)
  Подключить(Истина);
КонецПроцедуры

&НаКлиенте
Процедура Подключить(УстановитьЕслиНеПодключено) Экспорт
	Сообщить("Начинаем подключение ВК на клиенте.");
	НачатьПодключениеВнешнейКомпоненты(
		Новый ОписаниеОповещения("ПослеПодключения", ЭтотОбъект, УстановитьЕслиНеПодключено),
		"ОбщийМакет.Imagius",
		"Imagius",
		ТипВнешнейКомпоненты.Native);
КонецПроцедуры

&НаКлиенте
Процедура ПослеПодключения(Подключено, УстановитьЕслиНеПодключено) Экспорт
	Если Подключено Тогда
		Сообщить("ВК успешно подключена на клиенте.");
		Тест();
	ИначеЕсли УстановитьЕслиНеПодключено Тогда
		Сообщить("Начинаем установку ВК...");
		НачатьУстановкуВнешнейКомпоненты(
           	Новый ОписаниеОповещения("Подключить", ЭтотОбъект, Ложь),
           	"ОбщийМакет.Imagius");
    Иначе
        Сообщить("Не удалось установить/подключить внешнюю компоненту.");
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Асинх Процедура Тест()
	ОбъектВК = Новый("Addin.Imagius.Imagius");
	НастройкиПрименены = Ждать ОбъектВК.НастройкиРендерингаАсинх(
		"{
		|	""target_width"": 2000,
		|	""maximum_height"": 3000
		|}");

	Сообщить("Настройки применены: " + НастройкиПрименены.Значение);

	Результат = Ждать ОбъектВК.PdfFile2ImgFileАсинх(Объект.ПутьФайлPDF, "password", "1-100");
	Результат = ОбработкаСтрокиXML.УдалитьНедопустимыеСимволыXML(Результат.Значение);
	Сообщить("Обработанные файлы: " + Результат);
	Сообщить("Обработка завершена.");
КонецПроцедуры

#КонецОбласти // ТестДляКлиента

#Область ТестДляСервера

&НаКлиенте
Процедура ТестДляСервера(Команда)
	ТестНаСервере();
КонецПроцедуры

&НаСервере
Процедура ТестНаСервере()
	Если Не ПодключитьВнешнююКомпоненту("ОбщийМакет.Imagius", "Imagius", ТипВнешнейКомпоненты.Native) Тогда
		Сообщить("Не удалось подключить ВК на сервере.");
		Возврат;
	Иначе
		Сообщить("ВК успешно подключена на сервере.");
	КонецЕсли;

	ОбъектВК = Новый("Addin.Imagius.Imagius");
	НастройкиПрименены = ОбъектВК.НастройкиРендеринга(
		"{
		|	""target_width"": 2000,
		|	""maximum_height"": 3000
		|}");
	Сообщить("Настройки применены: " + НастройкиПрименены);
	Данные = ОбъектВК.PdfFile2ImgData(Объект.ПутьФайлPDF, "", 1);
	Картинка = Новый Картинка(Данные, Истина);
	Сообщить("Получена картинка в формате: " + Картинка.Формат());
	ОбработкаКартинки = Новый ОбрабатываемаяКартинка(Картинка);
	ОбработкаКартинки.ВыделитьОбласть(100, 100, 860, 960);
	Картинка = ОбработкаКартинки.ПолучитьКартинку();
	Картинка.Записать("C:\...\label-crop.png");
	Сообщить("Обработка завершена.");
КонецПроцедуры

#КонецОбласти // ТестДляСервера