Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] печать XML (http://forum.oszone.net/showthread.php?t=152462)

Loki3D 06-10-2009 11:39 1235657

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

amel27 07-10-2009 08:16 1236507

Цитата:

Цитата 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 07-10-2009 09:16 1236537

Большое спасибо! это то, что нужно.
Подскажите пожалуйста только, как можно изменить ориентацию листа с книжной на Альбомную.

amel27 07-10-2009 12:40 1236703

Цитата:

Цитата 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


Loki3D 07-10-2009 16:18 1236906

Охеренное тебе спасибо. Очень Выручил!

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


Время: 13:02.

Время: 13:02.
© OSzone.net 2001-