печать XML
помогите советом. Нужно автоматизировать печать XML файла, который идет вместе с XSLT файлом стиля.
Так же желательно, чтобы решение поддерживало Масштабированность печати по ширине альбомно ориентированного листа А4.
Идеальный вариант печати- из браузера IE, но тут требуется участие человека. Вроде как нету ключа, который бы позволил запустить IE на открытие нужного файла и печать.
Может ктото уже решал подобную задачу, знает консольные утилиты, или может вариант с конвертированием xml во чтото, что можно распечатать через консоль.
Вариант с табулировнным TXT не подходит изза большого количества столбцов втаблице, описанной в xml файле.
|
Цитата:
Цитата Loki3D
Идеальный вариант печати- из браузера IE, но тут требуется участие человека. Вроде как нету ключа, который бы позволил запустить IE на открытие нужного файла и печать. »
|
автоматизировать можно через WSH, пример VBS-скрипта для печати через IE:
Код:
On Error Resume Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objIE = CreateObject("InternetExplorer.Application")
strFile = Wscript.arguments.Item(0)
strFile = objFSO.GetAbsolutePathName(strFile)
If Not(objFSO.FileExists(strFile)) Then
WScript.Echo "Файл не найден"
WScript.Quit
End If
objIE.Visible = True
objIE.Navigate strFile
While objIE.Busy
WScript.Sleep 100
Wend
objIE.ExecWB 6, 2
WScript.Sleep 1000
objIE.Quit
пример запуска VBS скрипта из CMD:
Код:
CScript //Nologo IEPrint.VBS MyFile.XML
P.S. окно IE можно скрыть, заменив значение objIE.Visible с " True" на " False"
|
Большое спасибо! это то, что нужно.
Подскажите пожалуйста только, как можно изменить ориентацию листа с книжной на Альбомную.
|
Цитата:
Цитата Loki3D
как можно изменить ориентацию листа с книжной на Альбомную »
|
не так просто... учитывая, что IE не сохраняет ориентацию листа, а каждый раз считывает настройки с принтера, кроме того в KB236777 недвусмысленно сказано, что программно эту настройку в IE изменить нельзя:
Цитата:
There might be a need to change the print settings of Internet Explorer or the WebBrowser control programmatically. The only settings that can be changed are page margins, and header and footer information. There is no supported way to change other settings like page orientation or printer.
|
тем не менее есть один вариант (кроме ручной перенастройки параметров принтера): сходить по этому линку: PageSet.exe Programmatically Changes Default Printer Orientation, скачать оттуда Pageset.exe, выдернуть из комплекта PageSet.dll и зарегистрировать его в системе через RegSvr32 - после этого COM-объект можно использовать в WSH. Слегка измененный VBS-скрипт, использующий функциональность "PageSet.PrinterControl" - перед печатью ориентация устанавливается на книжную, а после - восстанавливается на первоначальную:
Код:
On Error Resume Next
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objIE = CreateObject("InternetExplorer.Application")
Set objPG = CreateObject("PageSet.PrinterControl")
strFile = Wscript.arguments.Item(0)
strFile = objFS.GetAbsolutePathName(strFile)
If Not(objFS.FileExists(strFile)) Then
WScript.Echo "Файл не найден"
WScript.Quit
End If
objPG.ChngOrientationLandscape
objIE.Visible = False
objIE.Navigate strFile
While objIE.Busy
WScript.Sleep 100
Wend
objIE.ExecWB 6, 2
WScript.Sleep 1000
objPG.ReSetOrientation
objIE.Quit
|
Охеренное тебе спасибо. Очень Выручил!
Может кому то будет полезно.
Я еще попутно бился над вопросом Смены принтера по умолчанию из командной строки и нашел вот такое решение
RUNDLL32 printui.dll,PrintUIEntry /?
|
Время: 13:02.
© OSzone.net 2001-