|
v8: Печать файла с картинкой | ☑ | ||
---|---|---|---|---|
0
Baloven
09.08.11
✎
14:34
|
поискал поиском но ничего не нашел
есть несколько файлов на компе с известным путем... воде все нормально с тем же екселем или вордом, а как отправить на печать допустим картинку формата TIFF???? а если она многостраничная???? PS попутно вопрос: можно ли как-то из свойств файла TIFF получить количество страниц в файле? |
|||
1
Baloven
10.08.11
✎
03:29
|
И все же неужели никто не может подсказать хотябы в каком направлении копать?
|
|||
2
Baloven
10.08.11
✎
05:32
|
странно, но в конфигураторе открывается только первая картинка, ка открыть-то? к тому же нужны все страницы??? открывать на проспотр их нужды нет - необходимо программно отправить файл(-ы) на печать причем все имеющиеся страницы...
|
|||
3
Wobland
10.08.11
✎
06:31
|
||||
4
Baloven
10.08.11
✎
07:10
|
может и умеет, а может и нет - только где ключи описаны????
|
|||
5
Wobland
10.08.11
✎
07:18
|
(4) то есть документацию ты уже почитал. боюсь, более ничем помочь не смогу
|
|||
6
Baloven
10.08.11
✎
07:20
|
какую документацию??? в папке с программой хелпа нет, на сайте тоже!!!! так о какой докмументации речь???
|
|||
7
Wobland
10.08.11
✎
07:21
|
(6) я увидел ссылку на несколько минут раньше тебя, совершенно не в курсе ;)
|
|||
8
Baloven
10.08.11
✎
07:23
|
:( ясно...
|
|||
9
Baloven
10.08.11
✎
09:22
|
может тогда кто-нибудь подскажет как обратится из 1с-ки напечатать список файлов на принтере??? ведь встроенные в систему проги все открывают и печатают - но нужно не вызывать стандартные диалоги а напрямую отпечатать....????
|
|||
10
Baloven
10.08.11
✎
12:01
|
в ветке PDF отправить на печать наткнулся вот на это "СоздатьОбъект("shell.application") и метод .Verb() для выбранных элементов" и появился вопрос а как выбрать файлы и ка их все же распечатать?????
|
|||
11
Wobland
10.08.11
✎
12:12
|
(10) может, не в тему, но НайтиФайлы() в СП найди
|
|||
12
Kom-off
10.08.11
✎
12:19
|
(0) Могу предложить Microsoft office document imaging (MODI)- пакет входящий в состав Microsoft office предназначенный для работы tif файлами. У этого пакета есть одна очень хорошая особенность - он имеет объектную модель к которой можно обратиться из других программ, т.е. использовать его как внешнюю компоненту. Ну, а недостатком является наличие Microsoft Office на компьютере на котором будет производиться обработка (печать) tif файлов.
|
|||
13
Baloven
10.08.11
✎
13:45
|
блин, ну не умею я особо работать с сом объектами :( подскажите как????
|
|||
14
Baloven
10.08.11
✎
13:46
|
про него я как раз и думал и инфу вроде нарыл, но примеры использования именно в 1С не могу найти :(
|
|||
15
Baloven
10.08.11
✎
13:47
|
... дополнение... именно MODI мне я так понимаю как раз и нужно, потому как в дальнейшем я хочу организовать сканирование через него в файлы....
|
|||
16
Baloven
10.08.11
✎
15:05
|
в конвигураторе по строке:
МойОбъект = Новый COMОбъект("shell.application"); МойЮбеъкт емеет лишь свойства, причем цикличные :( Application и Parent :( а что с ними дальше делать чтобы распечатьть док? |
|||
17
IVT_2009
10.08.11
✎
15:38
|
Долго пробовал всякие решения , сделал вот это:
Процедура ПечатьС3о(БазаФайлов) //****Вариант с 2мя очередями печати**** БазаФайлов.Свернуть("Имя,Гтд",""); БазаФайлов.Сортировать("Гтд"); //ИмяХранилища =O:\сертификаты\ //ПутьКпрограмме_=C:\Program Files\IrfanView\ ИмяХранилища = Константы.ПутьКбазеСертификатов.Получить(); ПутьКпрограмме_ = СокрЛп(Константы.ПутьКПрограммеПросмотра.Получить()); КомандаСистемы("del.bat","c:\print"); К = Лев("""",1); Цепочка = ""; Для ЕЕ = 0 По БазаФайлов.Количество()-1 Цикл Цепочка = "i_view32.exe /multitif=(c:\print\"+СокрЛп(БазаФайлов[ее].Имя)+","+СокрЛп(ИмяХранилища)+СокрЛп(БазаФайлов[ее].Имя) +") /killmesoftly"; КомандаСистемы(Цепочка,ПутьКпрограмме_); КонецЦикла; Принтер_ = "02"; Для ЕЕ = 0 По БазаФайлов.Количество()-1 Цикл Если БазаФайлов[ее].ГТД = "Да" Тогда Принтер_ = Константы.ИмяПринтераНа2.Получить(); Иначе Принтер_ = Константы.ИмяПринтераНа4.Получить(); КонецЕсли; Цепочка ="rundll32.exe C:\WINDOWS\System32\shimgvw.dll,ImageView_PrintTo /pt c:\print\"+СокрЛп(БазаФайлов[ее].Имя)+" "+к+Принтер_+к; КомандаСистемы(Цепочка,"C:\WINDOWS\System32\"); КонецЦикла; КомандаСистемы("del.bat","c:\print"); КонецПроцедуры где: БазаФайлов =Новый ТаблицаЗначений; БазаФайлов.Колонки.Добавить("Имя"); БазаФайлов.Колонки.Добавить("ГТД"); в переменную ИМЯ ложим имя файла |
|||
18
IVT_2009
10.08.11
✎
15:41
|
Печатает многостраничные tiff документы содержащие сертификаты. Инфравью нужен для приведения к более понятному системой виду. Мои файлы кушать не захотел без доп преобразования. Принтер 02 это копия принтера с одной предустановкой двухсторонней печати, 04 с другой. DEL.bat просто чистит временный каталог перед обработкой.
|
|||
19
Vadim_37
10.08.11
✎
15:52
|
Можно так: (на форме ТЧ, в ней реквизит типа строка путь к файлу и еще картинка на форме как объект Adobe, ну так для развлечения пользователей, печатать долго - пущай смотрят.
Для Каждого СтрокаТЧ из КачественныеУдостоверения Цикл ЭлементыФормы.КартинкаPDF.LoadFile(СтрокаТЧ.Путь); ЭлементыФормы.КартинкаPDF.printAll(); WShell=Новый COMОбъект("WScript.Network"); ПользовательОС=WShell.UserDomain+"\"+WShell.UserName; objShell = Новый COMОбъект("WScript.Shell") ; objScriptExec = objShell.Exec("taskkill /F /fi" + """Username eq """ + ПользовательОС + "/IM AcroRd32.exe") ; Предупреждение("Идет печать! Не нажимаейте кнопки и не двигайте мышью!", 5); КонецЦикла; |
|||
20
smaharbA
10.08.11
✎
16:05
|
модидок вполне справляется с задачей, он и распознает если чо
|
|||
21
smaharbA
10.08.11
✎
16:07
|
(12) моди имеет одну неприятную особенность - его нет после офиса 2003
|
|||
22
Kom-off
10.08.11
✎
18:59
|
(21) Блин, не знал! Вот эта новость ближе к печальным...
|
|||
23
Baloven
11.08.11
✎
05:06
|
(21) моди нет начиная с 2010 версии в 2007 еще есть... так что небольшая ошибочка :)
с другой стороны... TIFF прекрасно печатается и просматривается системой без вообще какого бы то нибыло доп софта... потому и спрашивал как обратится к системным функциям, дабы не проверять наличия софта, трабл еще и в том, что при печати через интерфейс вылазит гид печати виндовый - потому и был задан вопрос касательно обращения к шеллу, но я с ним не умею работать :( пока попробую предложенный вариант... но вопрос предлагаю рассмотреть через стандартные функции |
|||
24
Baloven
11.08.11
✎
11:09
|
вроде бы процесс двигается в нужном мне направлении:
1. все же решил использовать MODI (дока на него здесь) http://www.microsoft.com/downloads/details.aspx?familyid=7B6D9193-A1C8-4934-8007-47089FDE37DE&displaylang=en информацию почерпнул здесь (да простят меня модераторы) http://www.sql.ru/forum/actualthread.aspx?bid=4&tid=438069&pg=1 в теме обсуждается несолько иная ситуация и вопросы, оданако, очень силько переплетающиеся с моей темой, к тому же для целей обработки изображений в том числе и сделано сканирование с помощью этого http://www.microsoft.com/downloads/details.aspx?FamilyID=a332a77a-01b8-4de6-91c2-b7ea32537e29&DisplayLang=en |
|||
25
Baloven
11.08.11
✎
12:56
|
вроде все идет по плану вот так:
Попытка MODI = новый COMОбъект("MODI.Document"); Исключение Сообщить("MODI не найден"); Возврат; КонецПопытки; MODI.Create("путь и имя файла.tif"); MODI.PrintOut(2,3,1,"мой принтер"); где 2 первая страница с которой печатать, 3 - последняя страница 1 - количество экземпляров "мой принтер" имя принтера вот полные параметры печати: Prints the active document to a specified printer or file. expression.PrintOut(From, To, Copies, PrinterName, PrintToFileName, PrintAnnotation, FitMode) expression Required. An expression that returns a Document object. From Optional Long. The first page to print. To Optional Long. The last page to print. Default is -1 (prints all pages). Copies Optional Long. The number of copies to print. Default is 1. PrinterName Optional String. The name of the optional destination printer. PrintToFileName Optional String. The name of the optional destination file. PrintAnnotation Optional Boolean. Specifies whether the printout includes user annotations. FitMode Optional MiPRINT_FITMODES. Specifies how to scale the document to the page. Default is miPRINT_PAGE. FitMode can be one of the following MiPRINT_FITMODES constants. miPRINT_ACTUALSIZE (0) miPRINT_PAGE (1) завтра попробую выложить универсальную процедуру печати.... и все же остается вопрос как печатать в случае если отсутствует MODI т.е. стандартными средствами ОС???? |
|||
26
Baloven
11.08.11
✎
13:13
|
для незнающих инглиш MODI.PrintOut(); отправит весь документ на печать 1 экземпляр :)
|
|||
27
smaharbA
11.08.11
✎
13:22
|
(24)(25) зачем далеко ходил, все есть в пределах форума
|
|||
28
Baloven
11.08.11
✎
13:40
|
(27) поиском не нашел :( потому пришлось ходить "далеко" :(
|
|||
29
Baloven
11.08.11
✎
13:42
|
завтра все же попробую сделать универсальную (как минимум под MODI) процедуру, чтобы далеко не ходили и было в KB :) заодно сделаю для себя и других сканирование
|
|||
30
IVT_2009
11.08.11
✎
15:07
|
rundll32.exe C:\WINDOWS\System32\shimgvw.dll,ImageView_PrintTo /pt c:\print\"+СокрЛп(БазаФайлов[ее].Имя)+" "+к+Принтер_+к;
Это стандартная процедура виндовс. ТОлько не все TIFF понимает , мне пришлось его пересобирать. Печатает правда очень быстро |
|||
31
Baloven
11.08.11
✎
16:24
|
(30) что такое "к" в Вашем примере?
а через COM не будет быстрее? и я так понимаю отправляется все же по одному файлу, т.е. сразу массив нельзя передать... хотя перебрать массив в процедуре-то не составляет труда :)? |
|||
32
Stepa86
11.08.11
✎
16:28
|
я изображения вот так печатаю: http://infostart.ru/public/76108/
|
|||
33
smaharbA
11.08.11
✎
16:34
|
(30) и это было )
|
|||
34
Baloven
12.08.11
✎
08:40
|
вот код процедуры... пока не проверенный, если что-то не так выложу корректировку. у меня есть сомнения по поводу проверки постоянной на наличие софта, возможно необходимо проверку провести при переборе файлов, вот так перебираем файлы, можно единожды при запуске обработки проверить и занести в переменные и в коде ниже проверить переменные:
Процедура РаспечататьНажатие(Элемент) //Читаем из ТЗ (элемент формы) пути к файлам, у меня в ТЗ стоит в строке чекбокс я его проверяю нужно ли печатать Для Каждого СтрокаТаблицы Из ЭлементыФормы.ТаблицаПриложенияКИску.Значение Цикл Если СтрокаТаблицы.Использовать Тогда ПечатьФайла(СтрокаТаблицы.Файл); КонецЕсли; КонецЦикла; КонецПроцедуры дальше код процедуры печати Процедура ПечатьФайла(Файл,Количество=1) Экспорт Файл = СокрЛП(Файл); ВыбФайл = Новый Файл(Файл); Если Не ВыбФайл.Существует() И Не ВыбФайл.ЭтоФайл() Тогда Предупреждение("Файл не найден или это каталог!"); Возврат; КонецЕсли; Если ВыбФайл.Расширение = ".tif" Или ВыбФайл.Расширение = ".mdi" Тогда Попытка doc = новый COMОбъект("MODI.Document"); Исключение Сообщить("Microsoft Office Document Imaging не найден"); Возврат; КонецПопытки; doc.Create(Файл); doc.PrintOut(,,Количество); ИначеЕсли ВыбФайл.Расширение = ".doc" Или ВыбФайл.Расширение = ".docx" Тогда Попытка doc = новый COMОбъект("Word.Application"); Исключение Сообщить("Microsoft Word не найден"); Возврат; КонецПопытки; doc.Create(Файл); doc.PrintOut(,,Количество); doc.Application.Quit; ИначеЕсли ВыбФайл.Расширение = ".xls" Или ВыбФайл.Расширение = ".xlsx" Тогда Попытка doc = новый COMОбъект("Excel.Application"); Исключение Сообщить("Microsoft Excel не найден"); Возврат; КонецПопытки; doc.Workbooks.Open(Файл); doc.ActiveSheet.PrintOut(,,Количество); doc.ActiveWorkbook.Close; doc.Application.Quit; Иначе Сообщить("Неизвестное расширение файла"); КонецЕсли; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |