Мы боролись с подобной проблемой. Нам нужно было распечатать чеки на принтер чеков, этикетки на принтер этикеток и счета клиентов на принтер счетов для розничного магазина embrasse-moi . У нас есть фиктивные компьютеры, уголки, iPad, iPhone без возможности печати. Функция печати счета-фактуры была в основном тихой печатью. На сервер был записан файл PDF, а для его получения и печати использовался локальный скрипт оболочки.
Мы использовали следующее для идеального решения с минимальными библиотеками:
использовать TCPDF в PHP для создания PDF. Храните PDF на сервере. Поместите его в папку «Очередь печати». Слава для TCPDF, немного трудно учиться, но SICK SICK SICK. Обратите внимание, что мы печатаем 80 этикеток на страницу, используя avery 5167 со штрих-кодом с идеальной точностью. У нас есть очереди печати этикеток, чеков и счетов. Разные папки в основном для разных принтеров.
Используйте прилагаемый сценарий оболочки для подключения к серверу через FTP, загрузите PDF, удалите PDF с сервера, отправьте PDF на принтер и снова удалите PDF.
Используя локальный компьютер, подключенный к принтеру, запустите скрипт в терминале. очевидно, измените ваши принтеры и пути.
Поскольку вы всегда хотите, чтобы это работало, и поскольку вы используете MAC, создайте «приложение» с помощью automator. Запустите automator, поместите скрипт в «скрипт запуска оболочки» и сохраните. Затем вставьте это приложение в элемент входа. Посмотрите скрипт ниже скрипта оболочки, если вы хотите увидеть окно «output» на MAC.
БАМ - работает больной.
Вот скрипт оболочки
#!/bin/bash
# Get a remote directory Folder
# List the contents every second
# Copy the files to a local folder
# delete the file from server
# send the file to a printer
# delete the file
# compliments of embrasse-moi.com
clear # clear terminal window
echo "##########################################"
echo "Embrasse-Moi's Remote Print Queue Script"
echo "##########################################"
#Local Print Queue Directory
COPY_TO_DIRECTORY=/volumes/DATA/test/
echo "Local Directory: $COPY_TO_DIRECTORY"
#Priter
PRINTER='Brother_MFC_7820N'
echo "Printer Name: $PRINTER"
#FTP Info
USER="user"
PASS="pass"
HOST="ftp.yourserver.com"
#remote path
COPY_REMOTE_DIRECTORY_FILES=/path
echo "Remote Print Queue Directory: $HOST$COPY_REMOTE_DIRECTORY_FILES"
echo 'Entering Repeating Loop'
while true; do
#make the copy to directory if not exist
echo "Making Directory If it Does Not Exist"
mkdir -p $COPY_TO_DIRECTORY
cd $COPY_TO_DIRECTORY
######################### WGET ATTEMPTS ############################################
#NOTE wget will need to be installed
echo "NOT Using wget to retrieve remote files..."
# wget --tries=45 -o log --ftp-user=$USER --ftp-password=$PASS ftp://ftp.yourserver.com$COPY_REMOTE_DIRECTORY_FILES/*.pdf
######################### FTP ATTEMPTS ############################################
echo "NOT Using ftp to retrieve and delete remote files..."
#This seems to fail at mget, plus not sure how to delete file or loop through files
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASS
cd $COPY_REMOTE_DIRECTORY_FILES
ls
prompt
mget *
mdel *
END_SCRIPT
echo "Examining Files in $COPY_TO_DIRECTORY"
for f in $COPY_TO_DIRECTORY/*.pdf
do
# take action on each file. $f store current file name
#print
echo "Printing File: $f To: $PRINTER"
lpr -P $PRINTER $f
# This will remove the file.....
echo "Deleting File: $f"
rm "$f"
done
echo "Script Complete... now repeat until killed..."
sleep 5
done
и скрипт automator, если вы хотите увидеть вывод, оставьте приложение со скриптом
выберите вариант запуска сценария Apple:
on run {input, parameters}
tell application "Finder" to get folder of (path to me) as Unicode text
set workingDir to POSIX path of result
tell application "Terminal"
do script "sh " & "'" & workingDir & "script1.sh" & "'"
end tell
return input
end run