Печать tiff из 1с

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. ivanov_alex 90 28.05.13 08:53 Сейчас в теме
Есть необходимость печати многстраничных документов из из 1с(обработка привязана к печати документа реализация)
код
МодиДок=СоздатьОбъект("MODI.Document");
    МодиДок.Create(Путь+Имя);
    Сообщить(МодиДок.images.count);
    Для к=1 По МодиДок.images.count Цикл
        МодиДок.PrintOut(к,к);
    КонецЦикла;

сопсно результат БЫ устроил, если б первую страницу не выдавало в размере 5% от исходника
остальные страницы печатаются как положено-вписываются в А4, с первой страницей-просто беда какая-то
Помогите, чем сможете
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
20. Ёпрст 1064 28.05.13 10:42 Сейчас в теме
На вот, развлекайся
Прикрепленные файлы:
_ПринтёрТифф.ert
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Ёпрст 1064 28.05.13 09:26 Сейчас в теме
(1) ivanov_alex,
А так ?

МодиДок.PrintOut(к,к,1,,,,0);
3. ivanov_alex 90 28.05.13 09:32 Сейчас в теме
(2) Ёпрст, тот же результат, один в один
одну из страниц тупо жмет до 5 процентов от исходника
пробовал первую страницу пустую вставить в тифф, он её тупо пропускает и со второй жмет, остальные печатает как нужно
25. dusha0020 1111 28.05.13 11:26 Сейчас в теме
Ну вот функция:
Функция СохранитьФрейм(ИсхФайл,ФайлРезультата,фрейм_номер)
    //Сохраняет слой из файла tiff по номеру фрейма
	//Возвращает -1 когда закончились фреймы, 1 - успешно сохранен, 0 - какая-то фигня все-таки случилась
	Скрипт = "
	|Function SaveFrameToImage(SourseFile,ResultFile,frm)
	|On Error Resume Next
	|Dim Img 'As ImageFile
	|Dim IP 'As ImageProcess
	|Dim objFSO
	|
	|Set Img = CreateObject(""WIA.ImageFile"") 
	|Set IP = CreateObject(""WIA.ImageProcess"")
	|Set objFSO = CreateObject(""Scripting.FileSystemObject"")
	|
	|Img.LoadFile SourseFile
	|
	|If Img.FrameCount<frm Then
	|	SaveFrameToImage = -1
	|   Exit Function
	|End if
	|
	|Img.activeframe = frm
	|
	|IP.Filters.Add IP.FilterInfos(""Convert"").FilterID
	|IP.Filters(1).Properties(""FormatID"").Value = ""{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}""
	|
	|Set Img = IP.Apply(Img)
	|
	|If objFSO.FileExists(ResultFile) Then
	|    objFSO.DeleteFile ResultFile
	|End If
	|If Err.Number = 0 Then
	|	Img.SaveFile ResultFile
	|	SaveFrameToImage = 1
	|Else
	|	SaveFrameToImage = 0
	|End if
	|End Function
	|";
	ИспСкрипт= СоздатьОбъект("MSScriptControl.ScriptControl");
  	ИспСкрипт.Language="vbscript";
  	ИспСкрипт.AddCode(Скрипт);
 	Рез = ИспСкрипт.Modules("Global").CodeObject.SaveFrameToImage(ИсхФайл,ФайлРезультата,фрейм_номер);
	Возврат рез;
КонецФункции
Показать


Теперь, думаю, тему можно закрывать:)
dicwork; ivanov_alex; +2 Ответить
4. Ёпрст 1064 28.05.13 09:38 Сейчас в теме
А так ?

//Для к=1 По МодиДок.images.count Цикл
// МодиДок.PrintOut(к,к);
// КонецЦикла;

МодиДок.PrintOut();
5. ivanov_alex 90 28.05.13 09:40 Сейчас в теме
(4) Ёпрст, теперь все страницы в 5% выдал
6. Ёпрст 1064 28.05.13 09:42 Сейчас в теме
А так ?
МодиДок.PrintOut(,,,,,,0);
8. ivanov_alex 90 28.05.13 09:45 Сейчас в теме
(6) Ёпрст, первая страница 5% остальные-первые,в количестве 8 штук
без цикла выводит только первую

И на другой принтёр попробуй печнуть..

PrintOut(From, To, Copies, PrinterName, PrintToFileName, PrintAnnotation, FitMode)

в PrinterName можешь имя принтёра запихать

другой принтер-тот же результат, ничего не изменяется
стандартными виндовыми средствами печатает с первого листа и в актуальном размере
7. Ёпрст 1064 28.05.13 09:43 Сейчас в теме
И на другой принтёр попробуй печнуть..

PrintOut(From, To, Copies, PrinterName, PrintToFileName, PrintAnnotation, FitMode)

в PrinterName можешь имя принтёра запихать
9. Ёпрст 1064 28.05.13 09:47 Сейчас в теме
Нафига цикл ?

Печатай так, хотя бы тогда

МодиДок.PrintOut(-1,,,,,,0);

либо

МодиДок.PrintOut(1,МодиДок.images.count,,,,,0);
12. ivanov_alex 90 28.05.13 09:51 Сейчас в теме
(9) Ёпрст, первый вариант только первая страница
сторой варант-4 экземпляра
первый экземпляр в 5 % остальные в нормальном, но МНОГО ))
10. Ёпрст 1064 28.05.13 09:48 Сейчас в теме
Точнее, так

МодиДок.PrintOut(1,-1,,,,,0);
13. ivanov_alex 90 28.05.13 09:54 Сейчас в теме
(10) Ёпрст, тоже 4 экземпляра
через shimgvw.dll
синтаксис надо бы
я не силен в виндовых командах
11. Ёпрст 1064 28.05.13 09:49 Сейчас в теме
Если че, печатай через shimgvw.dll..
14. Ёпрст 1064 28.05.13 09:55 Сейчас в теме
а так ?

КомандаСистемы("rundll32.exe C:\WINDOWS\System32\shimgvw.dll,ImageView_PrintTo /pt "+Путь+Имя);
17. ivanov_alex 90 28.05.13 10:02 Сейчас в теме
(14) Ёпрст, запускается окно командной строки и все, результата нет
15. Ёпрст 1064 28.05.13 09:56 Сейчас в теме
просто МОДИ как бэ не везде есть, в 2010 офисе его ужо убрали
16. ivanov_alex 90 28.05.13 09:59 Сейчас в теме
18. Ёпрст 1064 28.05.13 10:06 Сейчас в теме
а так ?

КомандаСистемы("rundll32.exe C:\WINDOWS\System32\shimgvw.dll,ImageView_PrintTo /pt "+Путь+Имя+" "+ИмяПринтёра);
19. ivanov_alex 90 28.05.13 10:08 Сейчас в теме
(18) Ёпрст, ноль, в очередях заданий на печать ничего не висит
20. Ёпрст 1064 28.05.13 10:42 Сейчас в теме
На вот, развлекайся
Прикрепленные файлы:
_ПринтёрТифф.ert
21. dusha0020 1111 28.05.13 10:44 Сейчас в теме
А если разобрать tiff на фремы отдельными файлами, а потом печатать каждый файл в цикле?
ivanov_alex; +1 Ответить
22. ivanov_alex 90 28.05.13 10:48 Сейчас в теме
(21) dusha0020, намучался я с ними уже
перепилю обработку ЕПРСТ, там только файл подставить на автомате и все
Спасибо всем, тему закрою
23. dusha0020 1111 28.05.13 10:56 Сейчас в теме
Так может написать для потомков как фрейм из tif-а выручить?
24. ivanov_alex 90 28.05.13 11:01 Сейчас в теме
(23) dusha0020, думаешь, я знаю? напиши если знаешь, будет полезно
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот