Вот есть Сервис.ВысотаСтрокиТаблицы()
а почему нет Сервис.ШиринаКолонкиТаблицы() аналогично (в мм, пунктах, твипах)..?
.
как посчитать ширину печатной формы в мм? чтобы как-то пересчитать это в твипы для конвертера ПДФ йоксельного?
Тоже игрался с Йокселелем для PDF... Постоянные проблемы с угаданием размеров.
Сделал через "Microsоft Print To PDF". Создал (скопировал) еще один такой принтер (назвал PrintToPDF), выставил постоянное имя и место файла. Делал через com-объект Foxit Readera. Тоже ничего, но хуже.
Пример кода:
Сервис=СоздатьОбъект("Сервис");
Если Сервис.АктивныйКонтекст(КонтТаблицы)=1 Тогда
Если ТипЗначенияСтр(КонтТаблицы)="Таблица" Тогда
ПДФ=0;
Принтеры=Сервис.ПолучитьСписокПринтеров();
Поз=Принтеры.НайтиЗначение("PrintToPDF");
Если Поз=0 Тогда
Сообщить("Принтер PrintToPDF не найден!!!");
Иначе
ФС.УдалитьФайл("d:\print\print.pdf");
КонтТаблицы.ПараметрыСтраницы(,,,,,,,,,,,"PrintToPDF");
КонтТаблицы.Напечатать(0);
чЧас=0;
чМин=0;
чСек=0;
ТекущееВремя(чЧас,чМин,чСек);
чТекущее=ВремяВСекундах(чЧас,чМин,чСек,0);
чСтоп=ВремяВСекундах(чЧас,чМин,чСек,30);
чФлаг=0;
Пока чТекущее<чСтоп Цикл
Если ФС.СуществуетФайл("d:\print\print.pdf")=1 Тогда
Сервис.Пауза(1000);
чФлаг=1;
Прервать;
КонецЕсли;
Сервис.Пауза(1000);
ТекущееВремя(чЧас,чМин,чСек);
чТекущее=ВремяВСекундах(чЧас,чМин,чСек,0);
КонецЦикла;
Если чФлаг=0 Тогда
Сообщить("Не удалось создать PDF документ");
Иначе
Если ФС.СуществуетФайл("d:\print\print.pdf")=1 Тогда
ПДФ=1;
//Делаем что надо
КонецЕсли;
КонецЕсли;
КонецЕсли;
Иначе
Сообщить("Активное окно не является таблицей.");
КонецЕсли;
КонецЕсли;
В Йокселе можно ширину колокни в твипах получить
Я же и пишу, что всегда проблема с пересчетом была, тем более для таблиц с масштабированием "По ширине страницы". А так всегда "как есть".
как печформу, которая, например, шире чем А4 при 100% масштаба и у которой стоит автомасштабирование в параметрах страницы - как ее смасштабировать чтобы положить Йокселем в ширину А4 - не знаю. Если есть какие-то наметки, даже если криво считает/проблемы с пересчетом - поделись, плиз...
Да там и пересчета особенно никакого не требуется.
Ширина=0; Высота=0;
ТабличныйДокумент.Область().РассчитатьРазмеры(Ширина, Высота);
Конвертер = СоздатьОбъект("Йоксель.ГрафическийКонвертер.PDF");
Конвертер.Документ = ТабличныйДокумент;
ПолеВТвипах = 10*56.7; //~10мм
Конвертер.ШиринаСтраницы = Ширина+ПолеВТвипах*2;
Конвертер.ПолеСлева = ПолеВТвипах;
Конвертер.ПолеСправа = ПолеВТвипах;
//Конвертер.ВысотаСтраницы=Высота; //сам думай что делать с многострочными документами...
Конвертер.ЗаписатьВФайл(ИмяФайла);