вторник, 21 февраля 2012 г.

Печать в PDF для всех пользователей сети

Иногда надо отправить по электронной почте документ не очень широко распространенного формата, наиболее простое и правильное решение - печать в файл .pdf формата и отправка его как вложения по электронной почте. Про виртуальный .pdf принтер doPDF я уже писал раньше, а если надо установить его сразу всем пользователям в локальной сети? Решение - довольно простой .bat файл в автозагрузке. 

@echo off > nul 

rem install virtual pdf printer doPdf 7

if not exist "p:\PDF_printed" md "p:\PDF_printed" 

"\\server\userinst$\Virtual PDF printer\dopdf.exe" /VERYSILENT /NORESTART /SUPPRESSMSGBOXES /NOCANCEL /DefaultLang=REGST /NOICONS /NoInstallIfExists 

rem set doPdf settings 

if exist "%ProgramFiles%\Softland\doPDF 7\dopdf_ok.flg" goto dopdf_ok
regedit /s "\\server\userinst$\Virtual PDF printer\doPDF_setts.reg" 

copy /y "\\server\userinst$\Virtual PDF printer\doPDF v7.nvl" "%APPDATA%\Softland\novaPDF\doPDF v7.nvl" 

copy "\\server\userinst$\Virtual PDF printer\dopdf_ok.flg" "%ProgramFiles%\Softland\doPDF 7\dopdf_ok.flg" 

:dopdf_ok 

exit /b 0 

В папке “\\server\userinst$\Virtual PDF printer” должны быть следующие файлы: 

- dopdf.exe - дистрибутив doPDF принтера; 
- doPDF v7.nvl - файл настроек, скопировать с машины с тестовой установки; 
- dopdf_ok.flg - флаг настроек; 
- doPDF_setts.reg - настройки doPDF из реестра, экспортировать из машины с тестовой установкой, ключ [HKEY_CURRENT_USER\Software\Softland\doPDF\Printers\doPDF v7].

Но после установки остается еще одна проблема - если оставить без внимания папку “p:\PDF_printed”, то в ней через полгода будет гора документов и невозможно будет что-то найти, поэтому надо настроить в этой папке поддержание порядка.Диск p:\ - это сетевой диск на сервере вида \\server\%USERNAME%, реальное расположение - \\server\d$. Общая идея наведения порядка: вечером удаляется папка прошлого дня PreviousDay, документы за прошедший день перемещаются в папку прошлого дня, папка “p:\PDF_printed” остается пустой и готовой к работе на завтра - т.е. всегда есть копия документов за прошлый день. Если выразить это все в виде .bat файла - то получается приблизительно следующее: 

rem @echo off>nul 

rem keep "%%i\PDF_printed" clean 

rem run this on Server (server.main.local) 

cd /d "d:\users" > c:\reports\clean.log 

for /D %%i in (*.*) do ( 

if exist "%%i\PDF_printed\PreviousDay" rd /S /Q "%%i\PDF_printed\PreviousDay" >> c:\reports\clean.log

md "%%i\PDF_printed\PreviousDay" >> c:\reports\clean.log 

move /Y "%%i\PDF_printed\*.*" "%%i\PDF_printed\PreviousDay" >> c:\reports\clean.log 


exit /b 0 

Запуск этого .bat файла - каждый рабочий день после окончания работы, например, в 19-00 (пользователи в основном заканчивают работу в 17-00...18-00). После завершения этих в общем-то нехитрых действий получаем способ получения .pdf документов из чего угодно, а чтобы не было вопросов “А как всем этим пользоваться, я ничего не понимаю...” - пишем коротенькую инструкцию с картинками и выкладываем ее в общедоступном месте. В итоге получаем благодарности от пользователей и больше свободного времени на личное усмотрение.