Массовая печать в Windows / Хабр
Иногда нужно быстро распечатать много
документов, а открывать для этого каждый файл совсем не хочется. Первым делом напрашивается использование контекстного меню проводника, но у этого способа есть свои ограничения и нюансы. Поэтому пришлось искать альтернативу. За подробностями — прошу под кат.
Анализируем ситуацию и собираем данные
Тема пакетной печати не раз освещалась в
интернет-статьях. Например, в этой и этой.
Мы же начнем с выяснения того, какой функционал нужен конечным пользователям. В результате общения с коллегами получися такой список:
- печатать нужно только XML-файлы;
- форматирование для XML не требуется;
- на бумаге, помимо содержимого, должно быть указано и имя печатаемого файла;
- файлы должны быть отсортированы по имени, чтобы было удобно подшивать бумажные листы в архив.
Пожалуй, самым простым и очевидным видится печать из контекстного меню проводника, о чем можно почитать тут и здесь. По второй ссылке дана информация по удалению пункта «Печать» для определенных типов файлов, но сообразительный читатель легко поймет из нее, как, наоборот, можно добавить недостающее.
Но у такого способа есть, как минимум, два недостатка:
- нельзя напечатать больше 15 файлов за раз;
- файлы печатаются в случайном порядке (возможно, логика все же есть, но я ее не нашел), а не так, как они отсортированы в проводнике.
Первый недостаток легко устраним твиком реестра. Для решения второго есть рекомендации в виде танцев с бубном, но в нашей среде боги суровы и эти обряды не помогли.
Есть готовые сторонние решения (ссылки на статьи с информацией о них даны выше). Но при коммерческом использовании за эти продукты придется заплатить, к тому же всегда приятно
сделать что-то своими руками.
Выбираем инструмент и разрабатываем решение
Примечание.
Чтобы не переводить бумагу, на этапе подготовки и тестирования скрипта удобно использовать виртуальный принтер. Меня устроил штатный Microsoft XPS Document Writer, но есть еще PDF24 Creator, doPDF, CutePDF Writer — как говорится, на вкус и цвет…В качестве языка был выбран PowerShell. В базовой комплектации скрипт выглядит так:
Вариант 0
$FolderToPrint = "\\server\share\Folder" $FileMask = "*.xml" $FolderToPrint | Get-ChildItem -File -Filter $FileMask | Sort-Object Name | ForEach-Object { Write-Output ("Печать файла `"" + $_.FullName + "`"") Start-Process -FilePath notepad -ArgumentList ("/P `"" + $_.FullName + "`"") -Wait }
Печать выполняется средствами штатного блокнота Windows (чтоб не простаивал без дела).
Как видно из 3-й строки, сортировка в примере происходит по имени файла (Name).
Для сортировки в обратном порядке у командлета Sort-Object есть ключ -Descending.
В этом варианте печать идет на принтер по умолчанию, и нас такое поведение устроило. Если же нужно печатать на принтер, отличный от дефолтного, у блокнота есть параметр /PT.
Соответственно, код примет следующий вид:
<...> $PrinterName = "\\server2\Network Printer" <...> Start-Process -FilePath notepad -ArgumentList ("/PT `"$PrinterName`" `"" + $_.FullName + "`"") -Wait <...>
Аналогично вместо блокнота можно поэксплуатировать любую другую программу в зависимости от того, какой формат файлов нужно печатать. Главное — чтобы она поддерживала печать через интерфейс командной строки.
Примечание.
Если будете приручать Adobe Reader, имейте в виду этот старый баг. В нашем окружении он все еще проявляется, возможно, вам повезет больше. А еще есть хорошая статья, посвященная печати PDF из PowerShell.Если же вам на выходе нужен только «голый» текст из обычного текстовика, то 5-я строка варианта 0 примет такой вид:
Get-Content $_.FullName | Out-Printer -Name $PrinterName
Для печати на дефолтный принтер параметр -Name нужно опустить.
Для нашей задачи требовалась печать файлов из нескольких расположений. Немного дополнив вариант 0, получаем
Вариант 1
$FolderToPrint = @( "\\server1\share\Folder1", "\\server1\share\Folder2", "\\server1\share\Folder3" ) $FileMask = "*.xml" $ErrorActionPreference = "Stop" Try { $FolderToPrint | Get-ChildItem -File -Filter $FileMask | Sort-Object Name | ForEach-Object { Write-Output ("Печать файла `"" + $_.FullName + "`"") Start-Process -FilePath notepad -ArgumentList ("/P `"" + $_.FullName + "`"") -Wait } } Catch { Write-Host "При выполнении операции возникла ошибка:" Write-Host $Error[0] -ForegroundColor Red Read-Host "Нажмите ENTER для завершения" }
Для приличия добавлена функция обработки исключений. И в случае, если, например, папка, из которой печатаются файлы, стала недоступной, то выполнение печати прервется и пользователю будет выведено соответствующее уведомление. Кстати, замечено, что блокнот возвращает в exit-коде 0 даже при попытке распечатать несуществующий/недоступный файл, но в GUI при этом ругается.
Опробовав вариант 1, пользователи попросили дать возможность выбора папки и конкретных файлов в ней, поэтому было добавлено немного интерактивности в виде диалогового окна выбора файлов. Так появился
Вариант 2
Add-Type -AssemblyName System.Windows.Forms | Out-Null $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog $OpenFileDialog. InitialDirectory = "\\server\share" $OpenFileDialog.Multiselect = $True $OpenFileDialog.Filter = "XML-файлы (*.xml)|*.xml|Все файлы (*.*)|*.*" $OpenFileDialog.ShowHelp = $true $OpenFileDialog.ShowDialog() | Out-Null $FilesToPrint = $OpenFileDialog.FileNames | Sort-Object ForEach ($FullFileName in $FilesToPrint) { Write-Output "Печать файла `"$FullFileName`"" Start-Process -FilePath notepad -ArgumentList ("/P `"$FullFileName`"") -Wait }
Теперь при запуске получаем привычное окно проводника Windows с удобным выбором нужных файлов:
клик
Подробнее о работе с диалоговым окном открытия файлов можно почитать в официальной документации, а кто хочет узнать больше про GUI-зацию PowerShell, легко найдет много материала в сети, есть даже онлайн-конструктор форм.
Обработка исключений во втором варианте была убрана, т.к. интерактивное информирование пользователя было отдано на откуп проводнику и блокноту.
При запуске кода из ISE диалоговое окно выбора файлов выводится на заднем плане (Ctrl+Tab в помощь), но из командной строки все работает как положено. Также обратите внимание, что свойство ShowHelp должно быть $true, чтобы обойти этот баг.
Еще хотелось бы обратить внимание на свойство InitialDirectory. Кэп подсказывает, что оно определяет путь к папке, которая будет выбрана по умолчанию при запуске скрипта. Но, учитывая, что проводник «запоминает» последнее выбранное расположение, которое было указано пользователем в диалоге выбора файлов, InitialDirectory может пригодиться только при первом запуске скрипта.
Вариант 2 полностью подошел нашим пользователям, поэтому на нем мы и остановились. Но если вам нужен вариант с дамами и преферансом интерактивностью и сортировкой, отличной от имени (например, по дате изменения), это тоже реализуемо. Получаем
Вариант 3
Add-Type -AssemblyName System. Windows.Forms | Out-Null $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog $OpenFileDialog.InitialDirectory = "\\server\share" $OpenFileDialog.Multiselect = $True $OpenFileDialog.Filter = "XML-файлы (*.xml)|*.xml|Все файлы (*.*)|*.*" $OpenFileDialog.ShowHelp = $true $OpenFileDialog.ShowDialog() | Out-Null $SelectedFiles = $OpenFileDialog.FileNames #Если ничего не выбрано, завершаем работу If (!($SelectedFiles)) { Break } #На основании полного имени выбранного файла определяем выбранную папку $SelectedDir = (Split-Path -Parent $OpenFileDialog.FileName) #Получаем список всех файлов в выбранной папке $FilesToPrint = Get-ChildItem -Path $SelectedDir -Force | #отбираем только те из них, которые были выбраны в диалоговом окне Where-Object {$_.FullName -in $OpenFileDialog.FileNames} | #и сортируем Sort-Object -Property LastWriteTime ForEach ($File in $FilesToPrint) { $FullFileName = $File.FullName Write-Output "Печать файла `"$FullFileName`"" Start-Process -FilePath notepad -ArgumentList ("/P `"$FullFileName`"") -Wait }
Т. к. из объекта $OpenFileDialog нельзя напрямую извлечь такие параметры, как размер или дату создания файла, то мы с помощью командлета Get-ChildItem получаем список всех файлов в папке, выбранной пользователем, а потом оставляем только те из них, которые были выбраны пользователем, и сортируем их в нужном нам виде.
Отдаем в продакшн
Убедившись, что всё работает как надо, кладем скрипт в сетевую папку и выводим пользователям ярлык на рабочий стол.
А чтобы наш маленький беззащитный скрипт не обижали злые Execution Policies, прячем его в такую скорлупу:
powershell.exe -NoLogo -ExecutionPolicy Bypass -File "\\server\share\Scripts\BulkPrint.ps1"
клик
Или можно обернуть в теплый ламповый батник.
Среди прочего, в корпоративной среде запуску скрипта могут мешать суровые Software Restriction Policies и безжалостный AppLocker, а также другое защитное ПО, но это уже выходит за рамки статьи.
Можно добавить лоска, установив красивый значок для ярлыка. Я выбрал такой:
клик
Если пользователей нашего скрипта много, можно массово раздать ярлык с помощью предпочтений групповой политики.
Итог
Такое бывает, если выкатить без предварительного тестирования.
А у нас будет вот так:
И крамольная мысль напоследок: а что, если подумать в другом направлении и вместо всего описанного выше пообщаться с начальством и перестроить рабочий процесс?
Как распечатать документ в Word
При наличии принтера, печатать документы из Microsoft Word очень удобно. Разобравшись один раз во всех тонкостях и вариантах, процесс распечатки будет происходить легко и быстро. Рассмотрим, какие сведения могут потребоваться.
- Как распечатать на принтер.
- Как подготовить текст документа к распечатке на принтер.
- Варианты распечатки документа средствами Word.
- Как отправить на печать несколько файлов Word.
- Как отменить печать.
- Ошибки при печати в Word.
Работа с документами в редакторе Word, в большинстве случаев, заканчивается распечаткой на принтер. С первого взгляда, эта процедура ничего особенного из себя не представляет, но если вы работаете профессионально, то должны знать все возможности работы с редактором.
Как распечатать на принтер документ Word
90% процентов пользователей, отправляет на печать документ, что называется со стандартными настройками. Когда надо напечатать либо черновой вариант, либо какой нибудь стишок для ребенка, то действительно, никакого форматирования не требуется и достаточно нажать горячие клавиши «Ctrl» + «P» и документ будет распечатан. Однако, в данном случае итог может не соответствовать вашим ожиданиям и может потребоваться корректировка или перепечатка.
В случае, если нужно настроить параметры распечатки, заходите во вкладку «Файл» → команду «Печать».
Мы видим окно с большим количеством параметров. Автоматически они уже заданы и распечатать можно даже в таком виде. Однако, лучше во всем разобраться:
- Печать. Данная кнопка предназначена для распечатки документа в соответствии с заданными параметрами. Нажимая на нее, вы отправляете текст на печать. При необходимости, можно задать количество экземпляров документа.
- Принтер. Данный перечень содержит все подключенные принтеры. Нажимая на стрелку вниз, можно увидеть весь список и выбрать устройство, с помощью которого документ будет распечатан. Если принтера не оказалось в списке, его можно добавить с помощью команды «Добавить принтер…».
- Настройки. Данный раздел включает множество пунктов, начиная от распечатки полного документа или фрагмента текста и заканчивая шаблоном печати текста.
Далее будем разбираться со всеми настройками более подробно, так что не переживайте если пока что, что то осталось не понятным.
Как подготовить текст документа к распечатке на принтер
Подготовленный и отформатированый текст, это только начало. Существует огромное количество требований к документам. К примеру, вы не можете абы как распечатать дипломную работу, существуют определенные правила для полей и оформления. Так же, к требованиям ГОСТ`а, нужно придерживать при составлении договоров.
Примеров можно привести массу, поэтому разобраться с настройками и правильно подготовить документ к распечатке, вы просто обязаны.
Альбомный или книжный лист
В моей практике, распечатка книжного варианта листа, применяется практически везде. Любой документ, курсовую, дипломную или аналогичные документы, принято распечатывать на формате «Книжный лист».
Альбомный лист применяется реже. Мне встречались случаи, когда приходилось распечатывать таблицы, для этого идеально подходит ориентация «Альбомный лист». В этом случае, таблица легко читаема.
Безусловно, в своей работе вы самостоятельно сможете определить правильную ориентацию листа для распечатки.
Выберите в блоке «Настройки» нужный пункт:
- Книжная ориентация;
- Альбомная ориентация.
Очень важно!!! В блоке Настройка раздела «Печать», ориентацию можно поменять для всего документа сразу. Если нужно сделать разную ориентацию для документа (обычный текст «книжная», графики «альбомная»), воспользуйтесь настройками в «Параметры страницы», очень подробно об этом написано в статье Ориентация страницы в Word.
Выбор формата листа
В разделе «Настройки» находится после ориентации. После нажатия на стрелку сбоку откроется длинный список вариантов, включающий как стандартные размеры (А4, А3 и другие), так и другие (бумага для заметок, конверт и другие). Под названием формата написаны размеры листа. Можно задать свои параметры, выбрав строчку «Другие размеры страниц…».
Область печати
В разделе «Настройки» находится после выбора формата листа. Поля можно оставить без изменений, можно выбрать один из шаблонный вариантов, а можно задать свои значения. Для этого выбираем последнюю строчку «Настраиваемые поля».
Двухсторонняя печать
В разделе «Настройки» можно выбрать одностороннюю или двустороннюю печать. С односторонней все понятно, здесь и делать ничего не надо.
При выборе двусторонней печати, при наличии у принтера дуплекса, процесс будет автоматический. Если дуплекса нет, то нужно дождаться когда распечатается одна сторона, далее перевернуть бумагу и снова положить в лоток для распечатки другой стороны.
Зеркальная печать
Используется при печати книг и журналов. В разделе «Настройки» выбирая область печати нажимаем «Зеркальные». В данном случае отступы четных и нечетных страниц будут отличаться.
Черно-белая печать
Имеется возможно, распечатать цветной документ в черно-белым режиме. Для этого нужно изменить настройки принтера. Под выбранным устройством есть кнопка «Свойства принтера». В них выбираем черно-белую печать.
Варианты распечатки документа средствами Word
В зависимости от требований к документы, пользователь может изменять настройки печати.
Выбираем «Файл» → «Печать» и работам с разделом «Настройки».
- Напечатать все страницы документа. Выбирая этот пункт, вы подтверждаете, что хотите отправить на печать документ целиком.
- Напечатать текущую страницу. Будет напечатана страница, на который в данный момент установлен курсор. Другими словами, активная страница.
- Строка «Страницы». Здесь можно выписать через запятую, нужные номера страниц для распечатки. Оставшиеся номера, распечатываться не будут.
- Напечатать только четные страницы. Применяется для распечатки двухсторонней печати. Сначала печатают четные страницы, далее перекладывают отпечатанные листы обратно в лоток и печатают не четные.
- Напечатать только нечетные страницы. Объяснение в пункте выше.
- Напечатать исправления. В новых версиях редактора Word, во время создания документа разными пользователями, применяются исправления. В некоторых случаях нужно распечатать вместе с основным текстом, исправления (примечания).
- Для распечатки страниц в обратном порядке, необходимо использовать группу «Режим печати». В ней выбираем «В обратном порядке».
- Чтобы распечатать несколько страниц документа на одной, выбираем сначала масштаб для оригинала. Затем выбираем печать на формате, который будет больше оригинала. Таким образом напечатается нужное количество страниц на листе.
- Для распечатки выделенного фрагмента нужно открыть список вариантов в разделе «Настройки» и выбрать строчку «Напечатать выделенный фрагмент».
Как отправить на печать несколько файлов Word
Не самый распространенный метод распечатки, но все же в моей практике как то встречался случай, когда нужно было срочно распечатать сразу несколько файлов. Было абсолютно не важно какая там ориентация, отформатирован текст или нет, документы нужно было показать как черновики.
Открывать каждый файл и отправлять документ на печать, было очень долго. Есть другой, более быстрый метод.
- Выделяем интересующие документы Word, которые хотим распечатать.
- Нажимаем на выделенных файлах, правой кнопкой мыши.
- Выбираем пункт «Печать».
Все документы распечатаны.
Как отменить печать документа
Когда может понадобится отмена печати? Мне в голову сразу приходит ситуация, в которой пользователь перепутал количество распечатываемых листов или просто принтер понадобился для печати более важных документов, а предыдущая задача еще не выполнена. В этом случае можно отменить печать оставшихся листов.
Процедура отмены печати, производится в окне «Очередь печати», в которую можно попасть:
- Через значок «Принтер» справа внизу экрана. После нажатия на него откроется диалоговое окно со списком документов в очереди на печать.
- Через «Панель управления» → «Принтеры».
Найдите принтер, рядом с которым установлена галочка (используется по умолчанию). Нажимаем на нем правой кнопкой мыши и выбираем «Просмотр очереди печати».
В этом списке представлены документы, которые в данный момент печатаются. Нажмите правой кнопкой мыши на тот, который печатать не надо и выберите «Отменить».
Ошибки при печати в Word
Во время печати могут возникнуть некоторые ошибки.
Ошибка: при печати стираются последующие буквы или пропадает часть текста.
Причина: скорее всего текст вышел за рамки печати.
Ошибка: при печати закрывается Word.
Причина: скорее всего проблема в установленном Windows, придется переустанавливать.
Ошибка: при отправке на печать Word зависает.
Причина: возможно поможет установка более новой версии программы.
Интересненько!
Нужно срочно изучить!
Печать нескольких документов из списка папок
Innovation
Дом Инновации Смартфоны Мобильность
Печать нескольких документов Word может легко стать громоздкой. Вместо того, чтобы открывать каждый файл и печатать по отдельности, используйте список папок, чтобы напечатать их все сразу.
Автор Сотрудники ZDNet, участник на
Microsoft Word
Печать нескольких документов из списка папок
Печать нескольких документов Word может легко стать громоздкой. Вместо того, чтобы открывать каждый файл и печатать по отдельности, используйте список папок, чтобы напечатать их все сразу.
Следуй этим шагам:
- Откройте папку, содержащую документы Word, которые вы хотите напечатать.
- Нажмите [Ctrl] и выберите файлы для печати. (Если файлы расположены рядом, выберите первый файл в списке, нажмите [Shift] и выберите последний файл в списке.)
- Щелкните правой кнопкой мыши выделенное и выберите «Печать» в контекстном меню.
- Выберите нужные параметры печати и нажмите OK. (Выбранные параметры будут применяться ко всем документам.)
Word распечатает файлы в том порядке, в котором они расположены в папке.
Microsoft Excel
Упрощение ввода и форматирования дат
Работа с датами в Excel иногда может быть сложной. Используйте эти два совета, чтобы упростить ввод и форматирование дат.
Excel автоматически форматирует ячейку формулы как ячейку даты, когда формула ссылается на другую ячейку, содержащую дату или время. Например, если вы введете 1/1/2003 в A1, 1/1/2004 в B1 и =B1-A1 в ячейке C1, Excel отобразит результат в C1 как 30/12/1900.
Хотя Excel не позволяет отключить это автоматическое форматирование даты, он предоставляет комбинацию клавиш для быстрого изменения формата ячейки в Общий. Выберите ячейку с формулой и нажмите [Ctrl][Shift][~], чтобы отобразить истинное значение, которое в данном случае равно 365.
Кроме того, функция автозаполнения Excel позволяет быстро вводить ряд дат на лист. Например, предположим, что вы хотите отслеживать посещаемость за неделю, введя ряд дат в столбец B, и вы хотите начать с 1 марта 2004 года.
Выполните следующие действия:
- Введите 01.03.04 в поле B1.
- В B2 введите =B1+7.
Нажмите и перетащите маркер заполнения B2 вниз по столбцу, чтобы создать дополнительные даты.
Microsoft Доступ
Предварительно загрузить таблицу в новый запрос
Если вы знаете, какую таблицу вы хотите использовать в запросе, вы можете сэкономить несколько щелчков мыши, предварительно загрузив ее, прежде чем открывать запрос в представлении «Дизайн».
Следуй этим шагам:
- В окне базы данных выберите таблицу, которую вы хотите включить в свой запрос.
- На панели инструментов «База данных» щелкните стрелку раскрывающегося списка на кнопке «Новый объект» и выберите «Запрос».
- В диалоговом окне «Новый запрос» выберите «Дизайн» и нажмите «ОК».
Access открывает новый запрос в представлении «Дизайн» с выбранной таблицей. Чтобы добавить еще одну таблицу, нажмите кнопку «Показать таблицу» на панели инструментов «Конструктор запросов».
Вы также можете использовать этот метод для создания нового запроса из существующего запроса. Просто выберите запрос вместо таблицы на шаге 1.
Редакционные стандартыСвязанные
2 быстрых способа пакетной печати нескольких документов Word
В сегодняшней публикации мы рады поделиться с вами двумя быстрыми способами пакетной печати нескольких документов Word одновременно.
В документе трудно не рассказать о печати. Обычно мы открываем документ и печатаем его отдельно один за другим. Это может быть приемлемо, когда файлов всего несколько. Однако, говоря о большом количестве документов, мы должны придумать более быстрые решения, а не открывать и печатать каждый вручную.
Ниже приведены 2 доступных метода пакетной печати нескольких документов Word.
Способ 1: Печать через контекстное меню
- Начнем с того, что если вы не любите выбирать документы во время печати, вы можете расположить их все в одном каталоге.
- Затем посетите место, где вы храните целевые документы.
- Нажмите «Ctrl+A», чтобы выбрать все документы.
- Щелкните правой кнопкой мыши и выберите «Печать».
Кстати, с помощью этого метода вы можете каждый раз распечатать максимум 15 документов.
Метод 2: Пакетная печать документов через VBA
Поскольку в методе 1 число ограничено до 15, вы можете выбрать макрос для обхода ограничения.
- Прежде всего, поместите все целевые файлы в одну папку.
- Затем перейдите на вкладку «Разработчик» и затем «Visual Basic». Если вкладки «Разработчик» еще нет на ленте, вместо этого нажмите «Alt + F11», чтобы вызвать редактор VBA.
- Затем нажмите «Обычный» и вкладку «Вставка».
- И выберите «Модуль», чтобы создать новый.
- Дважды щелкните модуль, чтобы справа появилось место для кода.
- Вставьте туда коды:
Подпакетная печатьWordDocuments() Dim objWordApplication As New Word.Application Dim strFile как строка Dim strFolder как строка strFolder = InputBox("Введите адрес папки", "Адрес папки", "Например: E:\тестовое слово\тест\") strFile = Dir(strFolder & "*. doc*", vbNormal) Пока strFile <> "" С objWordApplication .Documents.Open (strFolder и strFile) .ActiveDocument.PrintOut .ActiveDocument.Close Конец с стрФайл = Каталог() Венд Установите objWordApplication = Ничего Конец суб
- И последнее, но не менее важное: нажмите кнопку «Выполнить» или нажмите «F5».
Теперь появится всплывающее окно. Просто введите путь, по которому вы храните документы, а затем нажмите «ОК», чтобы дождаться печати.
Безусловно, вы можете назначить кнопку на макрос, чтобы использовать ее в дальнейшем. Для получения более подробной информации вы можете перейти по этой ссылке: Как удалить форматирование вставленных текстов с помощью макросов и VBA в вашем Word
Позаботьтесь о ваших документах Word
Поскольку мы знаем, что Word уязвим для ошибок и ошибок, наши документы находятся на риск все время. Поэтому пришло время принять меры для защиты ценных данных.