Публикация

Печать файлов, изпользуя JScript

Вернемся немного к вопросу печати файлов из JScript. Немного ранее я приводил пример печати нескольких документов MS Word. Так вот, в ходе изучения возможности печати не только вордовских докуметов, но и других файлов, было выявлено еще 3 реализации печати.

/* 1 вариант - печать файлов любого формата */
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, и т.п.

/* 2 вариант - печать всех файлов от MS и графические файлы */
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. Разница от предыдущих вариантов заключается в том, что эта функция годится только для печати графических файлов. При этом используется мастер изображений, т.е. при печати запускается мастер, в котором Вы можете выбрать распечатываемые файлы, указать параметры печати и т.д.

/* 3 вариант - печать только графических файлов (мастер изображений) */
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, можно не только печатать, но и работать со сканерами и фотоустройствами.

Нравится

Поделиться

1 комментарий

Список сканеров, которые поддерживаются службой загрузки изображений Windows

http://support.microsoft.com/kb/293356/ru

Показать все комментарии