2008-08-22 5 views
36

Я работаю над веб-приложением, которое нужно печатать тихо - это без участия пользователя. Каков наилучший способ сделать это? Не нравится, что это можно сделать с помощью Javascript, Flash и/или AIR. Самое близкое, что я видел, - это апплет Java.«Тихая» печать в веб-приложении

Я могу понять, почему это было бы плохой идеей только для любого веб-сайта, чтобы иметь возможность сделать это. Этот конкретный экземпляр предназначен для внутреннего приложения, и это вполне приемлемо, если пользователю нужно добавить URL-адрес в список надежных сайтов, установить аддон и т. Д.

+0

что решение, которое работает для вас? – noamtm 2011-10-31 07:28:40

+4

Мы закончили с помощью апплета Java. это был кошмар. Обычно это было бы ужасно, но поскольку это было для Олимпийских игр 2008 года в Пекине, дополнительные дистанции и языковые различия сделали его кошмаром. В конце концов, это сработало «достаточно». Но опять же, кошмар. Я бы не рекомендовал и он. – Bill 2012-02-19 06:08:48

+0

Если вы наткнулись здесь только на то, чтобы найти маршрут апплета Java, это не очень хорошо работает, вот хорошее обсуждение: http://stackoverflow.com/questions/27057816 – tresf 2016-03-30 14:32:31

ответ

0

Должен быть честным, .. Но разве это не может быть сделано с помощью апплета или какого-то рода (будь то Java или что-то еще), которому предоставляются доверенные разрешения (например, внутри зоны интрасети) или что-то еще?

Возможно, стоит выяснить, какие разрешения могут быть предоставлены каждой зоне?

Следуя за Google, я думаю, что у вас определенно есть вызов, до сих пор большинство статей, которые я видел, включают печать на printers connected to the server.

Если его внутренняя, можно ли маршрутизировать печать с сервера на принтеры отделов/пользователей или что-то еще?

1

Я написал python tsr, который так часто опросил сервер (он вытащил свою частоту опроса с сервера) и распечатал на принтере этикетки. Было относительно приятно.

После написания на python я использовал py2exe на нем, затем установил компилятор inno, затем установил интрасеть и установил пользователь.

Это было не здорово, но это сработало. Пользователи запускали его утром, и программа получала бы переключатель kill с сервера в ночное время.

6

Вот два примера кода вы можете попробовать:

:

<script> 
function Print() { 
    alert ("THUD.. another tree bites the dust!") 
    if (document.layers) 
    { 
    window.print(); 
    } 
    else if (document.all) 
    { 
    WebBrowser1.ExecWB(6, 1); 
    //use 6, 1 to prompt the print dialog or 6, 6 to omit it 
    //some websites also indicate that 6,2 should be used to omit the box 
    WebBrowser1.outerHTML = ""; 
    } 
} 
</script> 
<object ID="WebBrowser1" WIDTH="0" HEIGHT="0" 
CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"> 
</object> 

:

if (navigator.appName == "Microsoft Internet Explorer") 
{ 
    var PrintCommand = '<object ID="PrintCommandObject" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></object>'; 
    document.body.insertAdjacentHTML('beforeEnd', PrintCommand); 
    PrintCommandObject.ExecWB(6, -1); PrintCommandObject.outerHTML = ""; 
} 
else { 
    window.print(); 
} 

Вы можете добавить сайт/страницу вы тестирование локальной зоны интрасети.

0

Если это просто внутреннее приложение, вы можете избежать печати из браузера и отправить распечатку непосредственно с сервера на ближайший принтер пользователю.

29

Вот что нужно сделать для немедленной печати Firefox, не отображая диалоговое окно настроек печати.

  1. Тип: config на панели местоположения Firefox и нажмите Enter.

  2. правой кнопкой мыши в любом месте на странице и выберите New> Boolean

  3. Введите имя предпочтения как print.always_print_silent и нажмите OK.


я обнаружил, что где-то, и это помогло мне

1

У меня он работает весь день, используя простую страницу JSP и библиотеки Java PDF Renderer (https://pdf-renderer.dev .java.net). Это работает, потому что Java печатает с использованием ОС, а не браузера. Предположительно, «тихая печать» считается уязвимостью/эксплорером браузера и была исправлена ​​после IE 6, так что удачи, чтобы заставить ее работать через Javascript или Active X. Возможно, это возможно, но я не мог заставить ее работать без Java.

0

Я нахожусь в той же проблеме здесь, это то, чему я научился до сих пор.

А .: Вы должны настроить учётную IPP PrintServer

У вас есть несколько реализаций сервера печати вы можете попробовать.

  1. Аппаратный сервер печати IPP: как DLINK DPR-1020 или аналогичный, некоторые принтеры имеют встроенную функциональность.

  2. сервер Linux с CUPPS: http://www.howtoforge.com/ipp_based_print_server_cups

  3. XP-Pro сервер с МКС: http://www.michaelphipps.com/ipp-print-server-windows-xp-solution

Б .: Вы должны сделать свой WebAPP клиентом этого сервера IPP, так что вы pick- process-отправить запрос печати каждого пользователя на PrintServer.

PHP :: PRINT :: IPP - это php lib, который вы можете попробовать (он хорошо протестирован на серверах чашек).

5

Мы столкнулись с подобной проблемой. Нам нужно было распечатать чеки на чековый принтер, наклейки на принтер этикеток и счета-фактуры клиентов на принтер-фактуру для розничного магазина embrasse-moi. У нас есть фиктивные компьютеры, уголки, ipads, iphones без возможностей печати. Печать функции счета-фактуры была в основном тихой печатью. На сервер был написан pdf-файл, и сценарий оболочки использовался локально для его извлечения и печати.

Мы использовали следующие за отличное решение с минимальными библиотек:

  1. использование TCPDF в PHP для создания PDF. Храните PDF-файл на сервере. Поместите его в папку «Очередь печати». Престижность для TCPDF, немного сложно изучить, но SICK SICK SICK. Обратите внимание, что мы печатаем 80 меток на странице, используя avery 5167 с штрих-кодом с полной точностью. У нас есть очередь печати, проверки и очереди счетов. Различные папки в основном для разных принтеров.

  2. Используйте прилагаемый скрипт для подключения к серверу через FTP, загрузите PDF-файл, удалите PDF-файл с сервера, отправьте PDF на принтер и снова удалите PDF-файл.

  3. Используя локальный компьютер, подключенный к принтеру, запустите сценарий в терминале. очевидно, измените ваши принтеры и пути.

  4. Поскольку вы всегда этого хотите, и потому, что вы используете MAC, создайте «приложение», используя автомат. Запустите автомат, поместите скрипт в «сценарий запуска оболочки» и сохраните его. Затем вставьте это приложение в элемент входа. См. Сценарий под сценарием оболочки, если вы хотите увидеть окно вывода на MAC.

BAM - работает больным.

Вот сценарий оболочки

#!/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, если вы хотите, чтобы увидеть результат, сохранить приложение с помощью сценария выбрать вариант запуска яблочного сценария:

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 
0

Вы должны посмотрите на PrintNode. Они предоставляют услуги бесшумной удаленной печати для веб-приложений. Вы устанавливаете часть программного обеспечения на рабочем столе, которое синхронизируется с их серверами. Затем вы можете отправить printjobs с помощью json-запроса, и они будут немедленно распечатаны.

4

Как @Axel написал, Firefox имеет параметр print.always_print_silent.

Для Chrome, используйте опцию --kiosk-printing пропустить диалог Print Preview:

Редактировать ярлык, используемый для запуска Chrome и добавить «--kiosk-печать», а затем перезапустить Chrome.

Примечание: Если это не работает, скорее всего, потому, что вы не полностью остановили Chrome, выйдите из системы и вернетесь, наверняка сделаете трюк.

1

Я знаю, что это более старая тема, но она по-прежнему является главным поиском Google для «тихой печати», поэтому я добавлю свои выводы в интересах тех, кто сейчас сталкивается с этим.

У нас была аналогичная проблема с печатными этикетками различных типов для различных принтеров для системы запасов. Нам потребовались некоторые пробные версии и ошибки, но мы обошли его, создав систему для создания PDF-меток с именем принтера и количеством страниц, закодированным в pdf. Все, что вам нужно сделать, это: В IE, перейдите в раздел «Свойства обозревателя» >> Безопасность >> Надежные сайты >> Сайты Очистить «Требуется проверка сервера (https :) для всех сайтов в этой зоне» добавить «http://[yoururl]» и PDF будет распечатываться автоматически.

Когда мы изначально установили это, мы использовали Chrome в качестве браузера по умолчанию, но в сентябре 2015 года Chrome отказался от возможности запуска плагинов NPAPI. Это означало, что вы больше не можете выбирать плагин Adobe pdf в качестве обработчика PDF по умолчанию, а встроенный в pdf плагин не обрабатывает тихую печать :-( Он все еще работает в Internet Explorer (IE11 на момент написания) ве не пробовали какие-либо другие браузеры.

НТН Приветствия, Nige