45

私は、ユーザーの関与なしに、サイレントに印刷する必要があるWebアプリケーションに取り組んでいます。これを達成するための最良の方法は何ですか?厳密にJavascriptでも、FlashやAIRでも実行できるのは好きではありません。私が見た中で最も近いのはJavaアプレットです。

どんなウェブサイトでもこれができるのはなぜ悪い考えなのか理解できます。この特定のインスタンスは内部アプリケーション用であり、ユーザーがURLを信頼済みサイトのリストに追加したり、アドオンをインストールしたりする必要がある場合は、完全に受け入れられます。

4

11 に答える 11

35

Firefox が印刷設定ダイアログ ボックスを表示せずにすぐに印刷できるようにするには、次の手順を実行する必要があります。

  1. Firefox のロケーション バーに about:config と入力し、Enter キーを押します。

  2. ページの任意の場所を右クリックし、[新規] > [ブール値] を選択します。

  3. プリファレンス名を print.always_print_silent と入力し、[OK] をクリックします。


どこかで見つけて助かりました

于 2009-03-25T16:56:49.367 に答える
11

@Axel が書いたように、Firefox には print.always_print_silent オプションがあります。

Chrome の場合、--kiosk-printingオプションを使用して [印刷プレビュー] ダイアログをスキップします。

Chrome の起動に使用するショートカットを編集し、「--kiosk-printing」を追加してから Chrome を再起動します。

注: うまくいかない場合は、Chrome を完全に停止していないことが原因である可能性が高く、ログアウトしてから再度ログインすると確実にうまくいきます。

于 2015-05-04T19:25:26.803 に答える
6

試すことができる2つのコードサンプルを次に示します。

1

<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>

2

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

テストするサイト/ページをローカルイントラネットゾーンに追加する必要がある場合があります。

于 2008-08-22T07:23:08.587 に答える
6

同様の問題に苦労しました。小切手は小切手プリンターに、ラベルはラベル プリンターに、顧客の請求書は小売店embrasse-moiの請求書プリンターに印刷する必要がありました。印刷機能のないダミーのコンピューター、隅、iPad、iPhoneがあります。請求書の印刷機能は、基本的にサイレント印刷でした。pdf がサーバーに書き込まれ、ローカルでシェル スクリプトを使用して取得して印刷しました。

最小限のライブラリで完璧なソリューションを実現するために、以下を使用しました。

  1. PHP で TCPDF を使用して PDF を作成します。PDF をサーバーに保存します。「印刷キュー」フォルダに入れます。TCPDF のおかげで、学ぶのは少し難しいですが、SICK SICK SICK です。avery 5167 を使用して 1 ページあたり 80 枚のラベルを完全な精度でバーコード付きで印刷していることに注意してください。ラベル、小切手、請求書の印刷キューがあります。基本的に、異なるプリンター用の異なるフォルダー。

  2. 付属のシェル スクリプトを使用して、FTP 経由でサーバーに接続し、PDF をダウンロードし、サーバーから PDF を削除し、PDF をプリンターに送信し、再び PDF を削除します。

  3. プリンターに接続されたローカル コンピューターを使用して、ターミナルでスクリプトを実行します。明らかにプリンターとパスを変更してください。

  4. 常にこれを実行する必要があり、MAC を使用するため、automator を使用して「アプリ」を作成します。automator を起動し、スクリプトを「run shell script」に入れて保存します。次に、そのアプリをログイン項目に貼り付けます。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 スクリプトを使用し、スクリプトを使用してアプリを保持し、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
于 2013-02-18T19:20:12.777 に答える
2

私は、サーバーを頻繁にポーリングし(サーバーからポーリング頻度を引き出して)、ラベルプリンターに出力するpythontsrを作成しました。比較的よかったです。

Pythonで記述したら、py2exeを使用し、次にinno setupコンパイラを使用して、イントラネットに配置し、ユーザーにインストールしてもらいました。

それは素晴らしかったが、うまくいった。ユーザーは朝に起動し、プログラムは夜にサーバーからキルスイッチを受け取ります。

于 2008-08-22T07:12:30.283 に答える
1

シンプルな JSP ページと Java PDF Renderer ライブラリ (https://pdf-renderer.dev.java.net) を使用して、1 日中動作させています。これが機能するのは、Java がブラウザーではなく OS を使用して印刷するためです。おそらく「サイレント印刷」はブラウザの脆弱性/エクスプロイトと見なされ、IE 6の後にパッチが適用されたので、JavascriptまたはActive Xを介して動作するようになると幸運です。おそらく可能ですが、Javaなしでは動作しませんでした.

于 2010-11-18T23:12:02.037 に答える
0

私はここで同じ問題に取り組んでいます、これは私がこれまでに学んだことです。

A .:IPPPrintServerをセットアップする必要があります

試すことができる複数のプリントサーバーの実装があります。

  1. ハードウェアIPPプリントサーバー:DLINK DPR-1020などのように、一部のプリンターにはこの機能が組み込まれています。

  2. CUPPSを備えたLinuxサーバー:http ://www.howtoforge.com/ipp_based_print_server_cups

  3. ISSを搭載したXP-Proサーバー:http://www.michaelphipps.com/ipp-print-server-windows-xp-solution

B .: WebAppをこのIPPサーバーのクライアントにして、すべてのユーザーの印刷要求を選択して処理し、プリントサーバーに送信する必要があります。

PHP :: PRINT :: IPPは、試してみることができるphp libです(cupsサーバーで十分にテストされています)。

于 2012-02-17T20:42:53.567 に答える
0

正直に言うと、ここで大声で考えています。しかし、信頼できるアクセス許可(イントラネットゾーン内など)が付与されたアプレットやその他の種類(Javaなど)では実行できませんでした。 ?

各ゾーンにどのような権限を与えることができるかを調査する価値があるかもしれませんか?

Googleに続いて、あなたは間違いなく挑戦をしていると思います。これまでのところ、私が見た記事のほとんどは、サーバーに接続されたプリンターへの印刷に関するものです。

内部の場合、サーバーから部門/ユーザーのプリンターなどに印刷をルーティングすることは可能でしょうか?

于 2008-08-22T07:08:05.160 に答える
0

単なる内部アプリケーションの場合は、ブラウザーからの印刷を避け、サーバーからユーザーに最も近いプリンターに直接印刷を送信できます。

于 2008-08-22T09:35:19.410 に答える