مقدمة
في الآونة الأخيرة ، تم استخدام الطابعة في المشروع. لم أفهمها في البداية ، لكنني الآن فعلت ذلك ، لذلك قمت بتلخيصها. تتضمن هذه المقالة طباعة مكالمات الخلفية (طريقتين) وطباعة JS في الواجهة الأمامية ، ولكن فقط IE تدعم الطباعة. علاوة على ذلك ، إذا كنت ترغب في توصيل الطابعة عن بُعد ، وتوليد رموز QR ويعمل مباشرة بواسطة أوامر الطابعة ، فأنت بحاجة إلى تعديل تكوين أمان المتصفح. هنا مقدمة مفصلة.
النوع الأول من طباعة الخلفية:
استخدم فئة PrintServicElookup في Javax للطباعة. يمكنك استدعاء الطابعة الافتراضية مباشرة ، أو يمكنك استخدام الطرق التالية لتصفية وطباعة:
printservicelookup.lookupmultidoCprintServices (النكهات ، السمات) ؛
الرمز القابل للتنفيذ كما يلي:
public static void main (string [] args) {fileInputStream TextStream = null ؛ حاول {textStream = جديد fileInputStream ("العنوان") ؛ } catch (fileNotFoundException e) {e.printStackTrace () ؛ } if (textStream! = null) // عندما لا يكون محتوى الطباعة فارغًا {// حدد نكهة Docflavor تنسيق الطباعة = docflavor.inpt_stream.pdf ؛ // service_formatted.printable // ضع خدمة الطباعة الافتراضية المطبوعة printservice = printserviceLookup.lookupoutservice () ؛ // إنشاء وظيفة docprintjob وظيفة طباعة = printService.CreatePrintJob () ؛ // قم بتعيين سمة print printrequestattributeset pras = new hashprintrequestattributeset () ؛ // قم بتعيين حجم الورق ، يمكنك أيضًا إنشاء فئة MediaSize جديدة لتخصيص حجم pras.add (mediaSizename.iso_a4) ؛ docattributeset das = new hashdocattributeset () ؛ // حدد محتوى الطباعة مستند Doc = جديد SimpleDoc (TextStream ، Flavor ، DAS) ؛ // لا تعرض مربع حوار الطباعة ، قم بطباعة العمل جرب مباشرة {Job.print (doc ، pras) ؛ // إجراء عمليات طباعة محددة في كل صفحة} catch (printException pe) {pe.printstacktrace () ؛ }} else {// محتوى الطباعة فارغًا ، فطالب المستخدم للطباعة سيؤدي إلى إلغاء joptionpane.showConfirmDialog (Null ، "آسف ، وظيفة الطابعة فارغة ، طباعة ملغاة!" ، "فارغة" ، joptionpane.default_option ، joptionpane.warning_message) ؛ }} النوع الثاني من طباعة الخلفية:
ملاحظة: النوع الثاني والثالث من طباعة أوامر الطابعة تستخدم. أنت هنا تحتاج إلى حزمة JNA JAR ، ويتطلب JDK 32 بت ، ويجب تسجيل DLL المقابل. بالنسبة للأنظمة المختلفة ، يجب تسجيل DLLs تحت نوافذ مختلفة. بعد التسجيل الناجح ، مطلوب وين+R ، ويتم تشغيل أمر REGSVR32.EXE TSCACATIONX.DLL وتشغيله.
الرمز القابل للتنفيذ كما يلي:
الفئة العامة javademo {الواجهة العامة tsclibdll يمتد المكتبة {tsclibdll مثيل = (tsclibdll) nativeLibrary ("tsclib" ، tsclibdll.class) ؛ int about () ؛ Int OpenPort (سلسلة البيانونام) ؛ int closeport () ؛ int sendCommand (سلسلة printerCommand) ؛ إعداد int (عرض السلسلة ، ارتفاع السلسلة ، سرعة السلسلة ، كثافة السلسلة ، مستشعر السلسلة ، السلسلة العمودية ، إزاحة السلسلة) ؛ int downloadPCX (اسم ملف السلسلة ، سلسلة image_name) ؛ int barcode (String X ، String Y ، نوع السلسلة ، ارتفاع السلسلة ، السلسلة القابلة للقراءة ، دوران السلسلة ، السلسلة الضيقة ، سلسلة واسعة ، رمز السلسلة) ؛ int printerfont (String X ، String y ، String fonttype ، string rotation ، string xmul ، string ymul ، string text) ؛ int clearbuffer () ؛ int printlabel (مجموعة سلسلة ، نسخة سلسلة) ؛ int formfeed () ؛ int nobackfeed () ؛ int windowsfont (int x ، int y ، int fontheight ، int rotation ، int fontstyle ، int fontunderline ، string szfacename ، string content) ؛ } الفراغ الثابت العام (سلسلة [] args) {system.setProperty ("jna.encoding" ، "gbk") ؛ // دعم الصينية simpledateformat df = new SimpledAteFormat ("YyyyM-MM-DD HH: mm: ss: ss") ؛ وقت السلسلة = df.format (تاريخ جديد ()) ؛ String qrcode = "PD102011" ؛ tsclibdll.instance.openport ("TSC TTP-244 Pro") ؛ // طباعة نموذج 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) ؛ // transfer 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 ، "arial" ، "Office Supplies-Label Paper") ؛ tsclibdll.instance.printlabel ("1" ، "1") ؛ tsclibdll.instance.closeport () ؛ }} ملاحظة: تتطلب طريقة الطباعة هذه اتصال USB (TTP-244 Pro). إذا كنت ترغب في إنشاء عبر الإنترنت والاتصال عن بُعد ، فأنت بحاجة إلى استخدام الطريقة الثالثة.
النوع الثالث من طباعة JS
عند الطباعة باستخدام 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 ("D:/myeclipseproject/filemanager/trunk/doct/02-reference/03-QR code/01-development مثال/tscactivex.dll-php-example/"،" 123.pcx ") ؛ tscobj.activexsetup ("70" ، "40" ، "4" ، "15" ، "0" ، "2.5" ، "0") ؛ SENSO) "،" GAP/Black Mark Racpace (MM) "،" GAP/Black Mark Offset Distance (MM) ") ؛ //tscobj.activexformfeed () ؛ //tscobj.activexnobackfeed () ؛ tscobj.activexSendCommand ("Direction 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 للنص ، ممثلة بنقطة ما. ب: سلسلة ، نقطة انطلاق الاتجاه y النص ، ممثلة بنقطة. C: أسماء الخطوط المصممة ، ما مجموعه 12 نوعًا (1: 8*12 نقاط 2: 12*20 نقاط 3: 16*24 نقاط 4: 24*32 DOTS 5: 32*48 DOTS TST24.BF2 الصينية 16*16 ك: النص 24*24 لتر: النص 16*16) د: سلسلة ، زاوية الدوران E: السلسلة ، تكبير الاتجاه X 1-8 F: سلسلة ، تكبير الاتجاه y 1-8 جم: سلسلة ، طباعة محتوى ActiveXwindowsfont (A ، B ، C ، D ، F ، G ، H) الوصف: نص طباعة باستخدام Windows font. المعلمات: A: نوع عدد صحيح ، نقطة البداية في اتجاه X للنص ، ممثلة بنقطة ما. ب: نوع عدد صحيح ، نقطة انطلاق الاتجاه y النص ، ممثلة بنقطة ما. ج: نوع عدد صحيح ، ارتفاع الخط ، ممثلة بنقاط. D: نوع عدد صحيح ، زاوية الدوران ، دوران عكس اتجاه عقارب الساعة. 0 دورات 0 ° ، 90 Rotate 90 ° ، 180 Rotate 180 ° ، 270-Rotate 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-ted") ؛ // var cmd = 'qrcode barcode نقطة بدء في الاتجاه x ، نقطة بدء الباركود في الاتجاه y ، مستوى تصحيح الخطأ ، ارتفاع رمز QR ، A (A و M) ، زاوية الدوران ، M2 (مصنفة في النوع 1 والنوع 2) ، S1 (S1-S8 ، الافتراضي S7) ،/"1231 مرحبًا 24213413254545353/" ؛ 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 ، "arial" ، "XXXXXXXX") ؛ tscobj.activexprintlabel ("1" ، "1") ؛ // (عدد نسخ الطباعة ، عدد المطبوعات لكل صفحة)لخص
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون لمحتوى هذه المقالة قيمة مرجعية معينة لدراسة أو عمل الجميع. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل. شكرا لك على دعمك إلى wulin.com.