Сведения о вопросе

Sadijon

08:01, 24th August, 2020

Теги

"Бесшумная" печать в веб-приложении

Просмотров: 595   Ответов: 11

Я работаю над веб-приложением, которое должно печатать молча, то есть без участия пользователя. Какой самый лучший способ достичь этого? Ему не нравится, что это можно сделать только с Javascript, ни Flash и / или AIR. Самое близкое, что я видел, включает в себя Java applet.

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



  Сведения об ответе

$DOLLAR

07:27, 2nd August, 2020

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

  1. Введите about:config в строке местоположения Firefox и нажмите Enter.

  2. Щелкните правой кнопкой мыши в любом месте страницы и выберите Создать > логическое значение

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


Я это где-то нашел, и это мне помогло


  Сведения об ответе

ЯЯ__4

21:52, 5th August, 2020

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

Один :

<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();
} 

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


  Сведения об ответе

$DOLLAR

08:46, 24th August, 2020

Как писал @Axel, Firefox имеет опцию print.always_print_silent.

Для Chrome используйте параметр --kiosk-printing , чтобы пропустить диалоговое окно предварительного просмотра печати:

Отредактируйте ярлык, который вы используете для запуска Chrome, и добавьте "--kiosk-printing", а затем перезапустите Chrome.

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


  Сведения об ответе

fo_I_K

10:48, 23rd August, 2020

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

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

  1. используйте TCPDF в PHP для создания PDF. Сохраните PDF на сервере. Положите его в папку 'Print Queue'. Слава за TCPDF, немного трудно учиться,но больной больной больной. Обратите внимание, что мы печатаем 80 этикеток на странице с помощью avery 5167 со штрих-кодом с идеальной точностью. У нас есть очередь на печать этикеток, чеков и счетов. Разные папки в основном для разных принтеров.

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

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

  4. Поскольку вы всегда хотите, чтобы это работало, и поскольку вы используете MAC, создайте 'app' с помощью automator. Запустите automator, поместите скрипт в 'run shell script' и сохраните. Затем вставьте это приложение в элемент входа в систему. Смотрите сценарий ниже сценария shell, если вы хотите видеть окно 'output' на MAC.

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

Вот сценарий shell

#!/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


  Сведения об ответе

park

11:08, 8th August, 2020

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


  Сведения об ответе

nYU

17:29, 11th August, 2020

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

Когда-то написанный в python, я использовал py2exe на нем, затем компилятор установки inno, затем поставил на интрасеть и заставил пользователя установить его.

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


  Сведения об ответе

прога

17:59, 12th August, 2020

Я знаю, что это более старая тема, но она все еще является лучшим поиском Google для 'silent printing', поэтому я добавлю свои результаты для тех, кто столкнется с этим сейчас.

У нас была аналогичная проблема с печатью этикеток различных типов на различных принтерах для стоксистемы. Это заняло некоторое количество проб и ошибок, но мы обошли его, заставив систему создать pdf ярлыков, с именем принтера и количеством страниц, закодированным в pdf. Все, что вам тогда нужно сделать, это: В IE перейдите в Свойства обозревателя > > безопасность > > надежные сайты > > сайты Снимите флажок "требуется проверка сервера (https:) для всех сайтов в этой зоне". добавить " http:/ / [yoururl] " и pdf будет распечатан автоматически.

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

НТН Овации, Найдж


  Сведения об ответе

COOL

16:35, 28th August, 2020

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

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

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

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


  Сведения об ответе

ЯЯ__4

04:27, 14th August, 2020

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


  Сведения об ответе

VCe znayu

07:40, 23rd August, 2020

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

О.: вам нужно настроить IPP PrintServer

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

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

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

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

B.: вам нужно сделать свой WebApp клиентом этого IPP-сервера, чтобы вы pick-process-send каждый запрос печати пользователя к PrintServer.

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


  Сведения об ответе

darknet

09:44, 11th August, 2020

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться