序文
最近、プリンターがプロジェクトで使用されました。私は最初はそれを理解していませんでしたが、今はやったので要約しました。この記事には、バックグラウンドコール印刷(2つの方法)とフロントエンドJS印刷が含まれていますが、IEのみが印刷をサポートしています。さらに、プリンターをリモートで接続する場合は、QRコードの生成とプリンターコマンドによって直接動作する場合は、ブラウザのセキュリティ構成を変更する必要があります。詳細な紹介です。
最初のタイプのバックグラウンド印刷:
JavaxのPrintServicelookupクラスを使用して印刷します。デフォルトのプリンターを直接呼び出すことも、次の方法を使用してフィルタリングおよび印刷することもできます。
printservicelookup.lookupmultidocprintservices(flavors、属性);
実行可能コードは次のとおりです。
public static void main(string [] args){fileinputStream textStream = null; try {textStream = new FileInputStream( "アドレス"); } catch(filenotfoundexception e){e.printstacktrace(); } if(textStream!= null)//印刷コンテンツが空でない場合{//印刷形式を指定しますdocflavor flavor = docflavor.input_stream.pdf; // service_formatted.printable //デフォルトの印刷サービスprintservice printservice = printservicelookup.lookprintservice(); //印刷ジョブを作成docprintjob job = printservice.createprintjob(); //印刷属性を設定しますprintrequestattributeset pras = new hashprintrequestattributeset(); //ペーパーサイズを設定すると、新しいMediasizeクラスを作成してサイズのpras.add(mediasizename.iso_a4)をカスタマイズすることもできます。 docattributeset das = new hashdocattributeset(); //印刷コンテンツdoc = new Simpledoc(TextStream、Flavor、DAS)を指定します。 // [印刷]ダイアログボックスを表示しないでください、印刷作業を直接試してください{job.print(doc、pras); //各ページで特定の印刷操作を実行} catch(printexception pe){pe.printstacktrace(); }} else {//印刷コンテンツが空の場合、ユーザーに印刷を促しますjoptionpane.showconfirmdialog(null、 "null、" null、 "申し訳ありません、プリンタージョブは空、joptionpane.default_option、joptionpane.warning_message); }} 2番目のタイプのバックグラウンド印刷:
注: 2番目と3種類の印刷は、プリンターコマンドを使用して動作します。ここでは、JNA JARパッケージが必要で、JDKには32ビットが必要で、対応するDLLを登録する必要があります。さまざまなシステムの場合、DLLはさまざまなウィンドウの下に登録する必要があります。登録が成功した後、WIN+Rが必要であり、REGSVR32.EXE TSCACTIVEX.DLLコマンドが呼び出されて実行されます。
実行可能コードは次のとおりです。
Public Class Javademo {public interface tsclibdll extends library {tsclibdll instance =(tsclibdll)native.loadlibrary( "tsclib"、tsclibdll.class); int about(); int openport(string pianoname); int closeport(); int sendcommand(String PrinterCommand); intセットアップ(文字列幅、文字列高さ、文字列速度、文字列密度、文字列センサー、文字列垂直、文字列オフセット); int downloadpcx(string filename、string image_name); int barcode(文字列x、文字列y、文字列タイプ、文字列高さ、文字列読み取り可能、文字列回転、狭い、文字列幅、文字列コード); int printerfont(string x、string y、string fonttype、string rotation、string xmul、string ymul、string text); int clearbuffer(); int printlabel(string set、string copy); int formfeed(); int nobackfeed(); int WindowsFont(int x、int y、int fontheight、int rotation、int fontstyle、int fontunderline、string szfaceName、string content); } public static void main(string [] args){system.setProperty( "jna.encoding"、 "gbk"); //中国のsimpledateformat df = new simpledateformat( "yyyy-mm-dd hh:mm:ss"); string time = df.format(new date()); string qrcode = "pd102011"; tsclibdll.instance.openport( "tsc ttp-244 pro"); // model tsclibdll.instance.setup( "70"、 "40"、 "5" 8 "、" 0 "、" 2 "、" 0 "); tsclibdll.instance.clearbuffer(); string command = "qrcode 120,90、q、8、a、0、m1、s7、/" " + qrcode +"/""; // QRコードのパラメーターと内容を印刷しますtsclibdll.instance.sendcommand(command); //コマンドTsclibdll.instance.sendcommand( "Text 300 70 36 0 0 0 arial"+ "Office Supplies-Label Paper"); //tsclibdll.instance.windowsfont(300、70、36、0、0、0、0、0、0、0、 "Office Supplies-label Paper"); tsclibdll.instance.printlabel( "1"、 "1"); tsclibdll.instance.closeport(); }}注:この印刷方法には、USB接続が必要です(TTP-244 Pro)。オンラインで生成し、リモートで接続する場合は、3番目の方法を使用する必要があります。
JS印刷の3番目のタイプ
JSを使用して印刷する場合、ブラウザは主に制限されています。現在、IEブラウザのみがサポートしています。印刷するとき、自動化サーバーはコンソール上にオブジェクトを作成できません。有効にするために、ブラウザセキュリティのカスタムレベルでActiveXの関連する設定を調整してください。コードは次のとおりです。
<script type = "text/javascript"> function printqrcode(){var tscobj = new ActiveXObject( "tscactivex.tsclib"); // dll Printer //tscobj.activexabout(); //プリンター情報TSCOBJ.ACTIVEXOPENPORT( "TSC TTP-244 Pro"); //プリンター名、誤って書くことはできません//TSCOBJ.ACTIVEXDOWNLOADPCX( " example/tscactivex.dll-php-example/"、" 123.pcx "); tscobj.activexsetup( "70"、 "40"、 "4"、 "15"、 "0"、 "2.5"、 "0"); //印刷設定// tscobj.activexsetup( "label width"、 "label height"、 "print speed"、 "print density(0-15)、" sensor string of a vean s a vean s en a vean sential senso) "、" gap/black mark垂直間隔(mm) "、" gap/black mark offset distance(mm) "); //TSCOBJ.ACTIVEXFORMFEED(); //TSCOBJ.ACTIVEXNOBACKFEED(); tscobj.activexsendcommand( "方向1"); //タグの方向を設定し、方向1方向左上隅(x、y)= {0,0};方向0右下隅(x、y)= {0,0}; tscobj.activexsendcommand( "Set Tear On"); tscobj.activexclearbuffer(); //TSCOBJ.ACTIVEXSENDCOMMAND( "putpcx 0,0、/" 123.pcx/""); /*1。ActiveXPrinterFontは、通常、英語の入力に使用されるマシン用の内蔵エンコードを使用します。 2。ActiveXWindowsFontは漢字を出力できますが、システムに存在するフォントでなければなりません。 tscobj.activexprinterfont( "a"、 "b"、 "c"、 "d"、 "e"、 "f"、 "g"); A:文字列、テキストのx方向の出発点、ポイントで表されます。 B:文字列、ドットで表されるテキストy方向の出発点。 C:合計12種類(1:8*12*12*20ドット3:16*24ドット4:24*32ドット5:32*48ドットTST24.BF2:伝統的な中国語24*24 TST16.BF2:伝統的な中国人16*16 TTT24.BF2:伝統的な中国24*24(レター24) TSS16.BF2:中国16*16 K:テキスト24*24 L:テキスト16*16)D:文字列、回転角度E:ストリング、X方向の拡大1-8 F:文字列、Yダイレクション倍率1-8 G:Y-Direction Content、ActiveXWindowsFont(A、B、C、D、E、F、G)説明:ウィンドウTTF Fontを使用した印刷テキスト。パラメーター:A:整数タイプ、テキストのx方向の開始点、ポイントで表されます。 B:テキストy方向の出発点である整数タイプ、ポイントで表されます。 C:整数タイプ、フォントの高さ、ドットで表されます。 D:整数型、回転角、反時計回りの回転。 0回数0°、90回の90°、180回の180°、270回の270°。 E:整数タイプ、フォントの外観。 0:ラベル; 1:斜体; 2:太字; 3:大胆な斜体。 F:整数タイプ、アンダースコア、0:アンダースコアなし。 1:アンダースコア。 G:文字列タイプ、フォント名。例:Arial、Times New Roman。 H:文字列タイプ、印刷テキストコンテンツ。 */// tscobj.activexwindowsfont(500、200、48、90、0、 "arial"、 "/u7f16/u7801"); tscobj.activexwindowsfont(260、60、60、0、2、0、 "arial"、 "xx-stecific"); // var cmd = 'qrcodeバーコードx方向のバーコードの起動点、y方向のバーコードの起動点、エラー補正レベル、qrコード高さ、a(a and m)、回転角、m2(タイプ1およびタイプ2に分類)、S1(S1-S8、デフォルトS7)、/"1231 Hello 2421341325454353/"' var cmd = 'qrcode 80,80、h、7、a、0、m2、s1、/"'+" 123456789 "+'/"'; tscobj.activexsendcommand(cmd); tscobj.activexwindowsfont(280、150、40、0、0、 "arial"、 "123456789"); tscobj.activexwindowsfont(180、260、30、0、0、0、0、 "arial"、 "xxxxxxxxxx"); tscobj.activexprintlabel( "1"、 "1"); //(プリントコピー数、ページごとのプリント数)tscobj.activexclearbuffer(); // clear tscobj.activexcloseport(); //印刷ポートを閉じる</script>要約します
上記は、この記事のコンテンツ全体です。この記事の内容には、すべての人の研究や仕事に特定の参照値があることを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。 wulin.comへのご支援ありがとうございます。