Имя: Пароль:
1C
1С v8
Печать картинок
0 Alexander5197
 
16.05.14
12:45
Здравствуйте, товарищи, нужна ваша помощь. Клиент требует распечатать картинки (у него это сертификаты на продукцию) с отсутствием полей, либо с полями не более 0,5 см. Кажется, фигня, но либо лыжи не едут, либо...  

Использую я следующий код:


//Заполним макет
    
    ТабДок = Новый ТабличныйДокумент;
    
    Макет = ПолучитьМакет("Макет");
        
    Пока ВыборкаРезультата.Следующий() Цикл
        
        ОбластьСтрока = Макет.ПолучитьОбласть("R1C1:R1C1");
        
        Попытка        
            Картинка = Новый Картинка(ВыборкаРезультата.ИмяФайла, Ложь);
        Исключение
            Сообщить("Изображение для: " + ВыборкаРезультата.Номенклатура + ", файл не найден (" + ВыборкаРезультата.ИмяФайла + ").",
            СтатусСообщения.Важное);
            Продолжить;
        КонецПопытки;
        
        КартинкаПечатьОрганизации = ОбластьСтрока.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
        КартинкаПечатьОрганизации.Картинка = Картинка;
        КартинкаПечатьОрганизации.Верх = 0;
        КартинкаПечатьОрганизации.Высота = 290;
        КартинкаПечатьОрганизации.Ширина = 205;
        КартинкаПечатьОрганизации.Лево = 0;
        КартинкаПечатьОрганизации.ГраницаСверху = Ложь;
        КартинкаПечатьОрганизации.ГраницаСлева = Ложь;
        КартинкаПечатьОрганизации.ГраницаСправа = Ложь;
        КартинкаПечатьОрганизации.ГраницаСнизу = Ложь;
        КартинкаПечатьОрганизации.РазмерКартинки = РазмерКартинки.Пропорционально;
        
        ТабДок.Вывести(ОбластьСтрока);
        
        ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
        
    КонецЦикла;
    
    Возврат ТабДок;



В параметрах страницы при печати все поля ставлю в ноль, масштаб 100%. При предварительном просмотре часть изображений вылазят за границы, и переносятся на другую страницу (изображения немного отличаются по размеру и по соотношению сторон). То есть на первой странице, например, изображение почти целиком, а на следующей - какая-нибудь часть (полосочка, которая не поместилась на первой).
Если же ставить не масштаб 100%, а "По ширине страницы", то изображения сжимаются заметно дальше от границ страницы, чем это следовало бы. Как можно извернуться в этом случае?

Вот примерчик нарисовал: [URL=http://www.imageup.ru/img269/1759507/print.png.html][IMG]http://www.imageup.ru/img269/1759507/print.png[/IMG][/URL]

Вообще, уже склоняюсь к использованию чего-нибудь через COM, потому что оперировать с размером картинка (а не рисунка табличного документа) не получается, инструментов 1С для такой работы я не нашел (может, они все-таки есть?). А так бы привести все картинки перед выводом в табличный документ к одному размеру, и спокойно печатать. Вот только с помощью чего так можно сделать?
2 Волшебник
 
модератор
16.05.14
12:48
3 Alexander5197
 
16.05.14
12:49
(Винтоват, напортачил)
4 vmlspb
 
16.05.14
12:52
я делал через макрос, выполняешь через COMОбъект текст макроса по изменению полей
5 Alexander5197
 
16.05.14
13:25
2 часа я промучился с этой байдой. Метод очень тупой. Суть в том, чтобы подобрать вручную нужный размер области/картинки.

На макет создаем область "Строка". Высота области 80 строк. На область кидаем картинку 79 строк на 13 колонок (если быть точным, то на 5 мм поуже, но существенно ли это, и не которые другие нюансы - не знаю, проверять уже сил нет). Параметры страницы при печати: все поля - 0, масштаб "По ширине страницы".

Код чуть другой:


    ТабДок = Новый ТабличныйДокумент;
    
    Макет = ПолучитьМакет("Макет");
    
    Пока ВыборкаРезультата.Следующий() Цикл
        
        ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
        
        Попытка        
            Картинка = Новый Картинка(ВыборкаРезультата.ИмяФайла, Ложь);
        Исключение
            Сообщить("Изображение для: " + ВыборкаРезультата.Номенклатура + ", файл не найден (" + ВыборкаРезультата.ИмяФайла + ").",
            СтатусСообщения.Важное);
            Продолжить;
        КонецПопытки;
        
        //КартинкаПечатьОрганизации = ОбластьСтрока.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
        КартинкаПечатьОрганизации = ОбластьСтрока.Рисунки.D1;
        КартинкаПечатьОрганизации.Картинка = Картинка;
        КартинкаПечатьОрганизации.Верх = 0;
        КартинкаПечатьОрганизации.Лево = 0;
        КартинкаПечатьОрганизации.ГраницаСверху = Ложь;
        КартинкаПечатьОрганизации.ГраницаСлева = Ложь;
        КартинкаПечатьОрганизации.ГраницаСправа = Ложь;
        КартинкаПечатьОрганизации.ГраницаСнизу = Ложь;
        КартинкаПечатьОрганизации.РазмерКартинки = РазмерКартинки.Пропорционально;
        
        ТабДок.Вывести(ОбластьСтрока);
        
        ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
        
    КонецЦикла;
    
    Возврат ТабДок


PS: А можно на будущее какие-нибудь подробности по COM? Или ссылочку на какую-нибудь статью по подобным макросам.
6 Ёпрст
 
16.05.14
13:39
(5) ерундой занимаешься..
Сделай акртинку маааааленькой, после вывода  - установи ей нужный размер и привет