embrace909
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору После долгого гуглёжа нашего и зарубежного интернета - рабочее решение по сабжу всё-таки составилось из разных источников, базовая идея взята с http://habrahabr.ru/post/112404/ Удаленная печать PDF через FTP: Актуально при работе в общественных сетях, при проблемах с сетевыми драйверами, при использовании Windows 7 Starter или Home Basic в качестве сервера для печати, где изначально возможности локального доступа ограничены кроме FTP соединения. А) Настройка сервера печати (Print Server), где физически распечатываются документы: 1) Создаём рабочий каталог - C:\FTPFolder\Uploading\Ready\ 2) Устанавливаем Foxit Reader - http://www.foxitsoftware.com/Secure_PDF_Reader/ 3) Устанавливаем Xlight FTP Server - http://www.xlightftpd.com/download.htm Создаём в нём новый виртуальный сервер и пользователя с логином и паролем, со всеми разрешениями, с домашней директорией C:\FTPFolder\ Специальные настройки Xlight FTP Server: - в настройках файлов и папок сервера указать запуск программы по завершении отгрузки (after upload): "C:\Windows\System32\WScript.exe" "C:\Windows\MoveUploadedPDFtoReady.vbs" - в общих опциях инсталлировать сервис для запуска вместе с Windows (с показом иконки в трее - по желанию). (При инсталляции сервиса сервер должен быть запущен и все настройки произведены.) 4) Скрипт MoveUploadedPDFtoReady.vbs кладём в папку C:\Windows\ Код: On Error Resume Next WScript.Sleep(1000) Set objFSO = CreateObject("Scripting.FileSystemObject") objFSO.MoveFile "C:\FTPFolder\Uploading\*.pdf" , "C:\FTPFolder\Uploading\Ready\" | 5) Скрипт PDFOverFTPPrintServer.vbs кладём в папку "Автозагрузка" и запускаем для первого раза. Код: Set gFSO = CreateObject("Scripting.FileSystemObject") Set gShell = CreateObject("WScript.Shell") gWatchFolder = "C:\FTPFolder\Uploading\Ready\" While true Set lFolder = gFSO.GetFolder(gWatchFolder) Set lFiles = lFolder.Files For Each lFile In lFiles PrintFile(gWatchFolder & lFile.Name) Next WScript.Sleep(5000) WEnd Sub PrintFile(pFileName) WScript.Sleep(1000) s = """C:\Program Files\Foxit Software\Foxit Reader\Foxit Reader.exe"" /p """ & pFileName & """" Call gShell.Run(s,0,true) WScript.Sleep(1000) gFSO.DeleteFile(pFileName) WScript.Sleep(1000) If gFSO.FileExists(pFileName) Then WScript.Echo "Print server stopped. Reason: failed to delete already printed PDF file " & pFileName WScript.Quit End If End sub | Б) Настройка клиента/ов, откуда будут посылаться документы на печать: 1) Устанавливаем Ghostscript (GPL) - http://www.ghostscript.com/download/gsdnld.html 2) Устанавливаем qvPDF - http://qvpdf.sf.net (*В дистрибутив qvPDF v3.1.0.0 по ошибке не включён файл libiconv2.dll, без которого происходят мелкие ошибки, в частности не будут удаляться файлы из временной папки. Поэтому берём требуемую DLL из архива по ссылке http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk-1.44-win.zip и вручную добавляем её в папку с установленной программой - C:\Program Files\qvPDF) 3) После установки, при желании, сразу меняем имя виртуального принтера qvPDF на своё, так как нижеприведённые настройки принтера привязываются строго к его имени. Запускаем от имени администратора qvPDF Configuration, заходим на закладку PlugIns, в Default PlugIn выбираем FTP, Use Default PlugIn - Always, нажимаем Configure PlugIn - забиваем IP вашего принт-сервера (в формате 192.168.1.2), логин и пароль, Directory - Uploading, галочку Create Directory - снимаем, Connection Mode - Passive, Transfer Mode - Binary, нажимаем OK, Apply, пробуем распечатать пробную страницу Testpage. 4) Далее на клиенте используем принтер qvPDF по умолчанию для удаленной печати PDF через FTP. | Всего записей: 4624 | Зарегистр. 03-03-2006 | Отправлено: 18:19 18-03-2012 | Исправлено: embrace909, 12:44 02-06-2012 |
|