Имя: Пароль:
1C
1С v8
Печать картинки
,
0 Bibr
 
24.12.13
11:00
есть файл *.jpg
необходимо распечатать средствами 1С, без внешних приложений.

создаю макет.
программно помещаю на него картинку, печатаю.

код:

        макет = ПолучитьМакет("Макет");
        
        Область = Макет.ПолучитьОбласть("Шапка");
        Рисунок = Область.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
        Рисунок.Картинка = Новый Картинка(ПутьФайл);
        Рисунок.РазмерКартинки = РазмерКартинки.РеальныйРазмер;
        
        Рисунок.ГраницаСверху = 0;
        Рисунок.ГраницаСлева = 0;
        Рисунок.ГраницаСнизу = 0;
        Рисунок.ГраницаСправа = 0;

        Рисунок.Верх = 5;
        Рисунок.Высота = 100;
        Рисунок.Ширина = 100;
        Рисунок.Лево = 5;

        ТабДок.Вывести(Область);


Вопрос:
1. как распечатать реальный размер? откуда брать информацию в поля высота, ширина? (сейчас от балды туда ставлю. картинки разного размера могут быть)
2. как распечатать на один лист?

спасибо.
1 lamme
 
24.12.13
11:06
а не пробовал печатать через типовую программу просмотра изображений на компутере?

типа
КомандаСистемы(тут типовой просомтрщик который указан в системе как прогр для просмотра изображений. Или можно жестко прописать ..     С ключами - чтобы сразу де печаталось на принтер)

А так - не угадаешь
2 Bibr
 
24.12.13
11:13
(1) спсибо, конечно, но
"необходимо распечатать средствами 1С, без внешних приложений."
3 lamme
 
24.12.13
11:14
а зачем ?
тебе на выходе нужна распечатанная картинка ?
4 НЕА123
 
24.12.13
11:22
(0)
HTML
?
5 Bibr
 
24.12.13
11:26
(4) а можете чуть поподробней?
сейчас у меня обычный макет, не html.
Html как-то поможет?
6 Bibr
 
24.12.13
11:27
+(0)
вообще мне казалось, что долно быть что-то простое типовое безпроблемное, о чём я просто ещё не знаю.

Ведь печатаются же фотографии сотрудников и номенклатуры как-то?
7 manyak
 
24.12.13
11:31
вот ты привязался к реальному размеру :) а если картинка А1 размером, как печатать будешь? имхо важно чтоб поместилась в А4 и сохранить пропорции
8 Bibr
 
24.12.13
11:33
(7) да.
как это сделать?
9 manyak
 
24.12.13
11:44
узнаешь размер картинки, определяешь влезит ли он в макет, если больше А4- то делаешь макс размер области пропорционально размерам-пропорциям картинки, если меньше А4 - влазит, делаешь размер области - такой же как и у картинки по X и по Y.

Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    Перем Имя,Путь;
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    Диалог.Заголовок = "Выберите файл";
    Диалог.ПолноеИмяФайла = "";
    Диалог.ПредварительныйПросмотр = Истина;
    //Диалог.Фильтр = "Файлы картинок|*.jpg;*.bmp";

    Если Не Диалог.Выбрать() Тогда
        Возврат;
    КонецЕсли;
    
     Шел=Новый COMОбъект("Shell.Application");
    Папка=Шел.NameSpace(Диалог.Каталог);
    Файл=СтрЗаменить(Диалог.ПолноеИмяФайла,"\","" "");
    Файл=Папка.ParseName(СтрПолучитьСтроку(Файл,СтрЧислоСтрок(Файл)));
       Попытка
        Сообщить(Папка.GetDetailsOf(Файл,31));
    Исключение
    КонецПопытки;

КонецПроцедуры
10 Bibr
 
24.12.13
18:24
(9) круто.
Спасибо большое.
А где можно почитать про Shell.Application
и какие фишки у него есть??
11 Bibr
 
24.12.13
18:27
в общем-то, инфы в п (9) должно хватить. Спасибо большое.

но ещё раз Апну сабж (6):

может кто-то знает простое тривиальное решение?
неужели моя задача, формулируемая 2словами "распечатать рисунок" не имеет простого стандартного решения?
12 Bibr
 
25.12.13
09:33
(9)
не взлетело.
Пиксели изображения гораздо больше тех единиц, которые в 1С.

Эмперически вывел коэффициент - примерно 3.7 Одинаковый по вертикали и горизонтали.

Вроде похоже на то, что нужно.

Но, блия, как же это через задницу.
К тому же нет уверенности, что этот коэффициент не плавает в зависимости от винды, формата файла, погоды.

Посему продолжаю поиски.

Попробуем с другой стороны.
А как задать на макете картинку, размером А4?
13 Bibr
 
25.12.13
12:49
апну
14 Bibr
 
25.12.13
18:39
апну ещё раз
15 Bibr
 
26.12.13
11:45
:(
2 + 2 = 3.9999999999999999999999999999999...