PDA

Показать полную графическую версию : [решено] печать XML


Loki3D
06-10-2009, 11:39
помогите советом. Нужно автоматизировать печать XML файла, который идет вместе с XSLT файлом стиля.
Так же желательно, чтобы решение поддерживало Масштабированность печати по ширине альбомно ориентированного листа А4.
Идеальный вариант печати- из браузера IE, но тут требуется участие человека. Вроде как нету ключа, который бы позволил запустить IE на открытие нужного файла и печать.
Может ктото уже решал подобную задачу, знает консольные утилиты, или может вариант с конвертированием xml во чтото, что можно распечатать через консоль.
Вариант с табулировнным TXT не подходит изза большого количества столбцов втаблице, описанной в xml файле.

amel27
07-10-2009, 08:16
Идеальный вариант печати- из браузера 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
07-10-2009, 09:16
Большое спасибо! это то, что нужно.
Подскажите пожалуйста только, как можно изменить ориентацию листа с книжной на Альбомную.

amel27
07-10-2009, 12:40
как можно изменить ориентацию листа с книжной на Альбомную »не так просто... учитывая, что IE не сохраняет ориентацию листа, а каждый раз считывает настройки с принтера, кроме того в KB236777 (http://support.microsoft.com/kb/236777) недвусмысленно сказано, что программно эту настройку в 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 (http://support.microsoft.com/kb/198901), скачать оттуда Pageset.exe (http://download.microsoft.com/download/vb60pro/utility/1/win98/en-us/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

Loki3D
07-10-2009, 16:18
Охеренное тебе спасибо. Очень Выручил!

Может кому то будет полезно.
Я еще попутно бился над вопросом Смены принтера по умолчанию из командной строки и нашел вот такое решение
RUNDLL32 printui.dll,PrintUIEntry /?




© OSzone.net 2001-2012