Вернемся немного к вопросу печати файлов из JScript. Немного ранее я приводил пример печати нескольких документов MS Word. Так вот, в ходе изучения возможности печати не только вордовских докуметов, но и других файлов, было выявлено еще 3 реализации печати.
function PrintFile(Folder, FileName, Count) {
try {
var Shell = System.CreateObject("Shell.Application");
var FilePath = Folder + "\\" + FileName;
if (IsZeroValue(Count)) {
Count = 1;
}
for (var i = 0; i Count; i++) {
Shell.ShellExecute(FilePath, "", "", "print", 1);
}
} catch(e) {
Log.Write(2, e.Message);
}
}
Отмечу "минус этой реализации. При печати запускается само приложение, ассоциирующееся с данным типом файла, т.е. если печатаете pdf-файл, то запускается Acrobat, если xls-файл - Excel, и т.п.
function PrintFile(Folder, FileName, Count) {
var Shell = System.CreateObject("Shell.Application");
var Folder = Shell.Namespace(Folder);
var FolderObjects = Folder.Items();
var FileObject = FolderObjects.Item(FileName);
if (Assigned(FileObject)) {
if (IsZeroValue(Count)) {
Count = 1;
}
for (var i = 0; i Count; i++) {
FileObject.InvokeVerbEx("Print");
}
}
}
Вообще, этот способ должен работать идентично первому. Но у меня при проверке почему-то не захотели печататься pdf-файлы. Возможно, это моя локальная проблема.
И, наконец, 3 способ. Расскажу немного подробнее. Для того, чтобы "работал" этот вариант необходимо дополнительно установить библиотеку wiaaut.dll от MS, поскольку в этой реализации используется WIA (Windows Image Acquisition. Если кому интересно, ссылка: http://en.wikipedia.org/wiki/Windows_Image_Acquisition). Т.е. эту библиотеку предварительно необходимо скачать, установить (используя regsvr32.exe) и далее можно использовать методы COM-объекта WIA. Разница от предыдущих вариантов заключается в том, что эта функция годится только для печати графических файлов. При этом используется мастер изображений, т.е. при печати запускается мастер, в котором Вы можете выбрать распечатываемые файлы, указать параметры печати и т.д.
function PrintFile(Folder, FileName, Count) {
var Dialog = System.CreateObject("WIA.CommonDialog");
var Vector = System.CreateObject("WIA.Vector");
Vector.Add(Folder + "\\" + FileName);
try {
Dialog.ShowPhotoPrintingWizard(Vector);
} catch(e) {
Log.Write(2, e.Message);
}
}
Отмечу следующее. Используя WIA, можно не только печатать, но и работать со сканерами и фотоустройствами.
Список сканеров, которые поддерживаются службой загрузки изображений Windows