Firdaus Archive

Blog pribadi untuk curhat, share tentang script, software, kuliah, project IT dan seputar IT.

Tampilkan postingan dengan label Printer. Tampilkan semua postingan

Untuk Cetak di Printer Draft Agar bisa Langsung Cetak ke Printer (Epson) atau RAW Print

 Link bisa dipakai disini 

http://download4.epson.biz/sec_pubs/pos/reference_en/escpos/index.html

Untuk Cetak di Printer Epson Dot Matrix dan Agar Bisa Autocut Menggunakan Bahasa Pemrograman Apapun

Bisa Memakai 2 Cara ini

printData += '<crlf><crlf><crlf><crlf><crlf><char29>V0';

printData += '\r\n\r\n\r\n\x1D\x56\x01';









Untuk Python Bisa Coba di Bawah ini : Original Source Code (https://github.com/python-escpos/python-escpos/issues/129)

This comment is not directly related to Issue #18:


I am describing a possible extension, which I intend to resubmit later as a new 

issue.


Here is an experiment, for people who have a combination thermal & slip 

printer. The paper type can be selected:


HW_PRINT_ROLL = '\x1B\x63\x30\x03' # 80mm roll, thermal

HW_PRINT_SLIP = '\x1B\x63\x30\x04' # Slip / Cheque, dot matrix


Common settings, like the type face and character geometry, can be set on the 

dot matrix slip printer, the same way as done for the thermal engine.


E.paper('slip')


E.set('left','A','B',1,2)


If anyone tests this, please be mindful of both the logical and physical length 

of your slip. My printer seems not to sense the end of a narrow slip. It is 

okay with an A4 sheet.


PAPER_SLIP_OUT  = '\x1B\x4B\xC0' # Eject slip or cheque


The method I use to eject is a slip-reverse command. It reverses the feed 

direction on a flat paper path TM-H5000II, and feeds a slip out forward on the 

TM-H6000.


E.cut('slip')


Always return to the roll paper type when finished.


E.paper('roll')



% hg diff


diff -r 849dabb63ce0 escpos/constants.py

--- a/escpos/constants.py   Thu May 30 08:56:33 2013 -0700

+++ b/escpos/constants.py   Sat Jan 18 15:14:30 2014 +1100

@@ -10,16 +10,21 @@

 HW_INIT   = '\x1b\x40'         # Clear data in buffer and reset modes

 HW_SELECT = '\x1b\x3d\x01'     # Printer select

 HW_RESET  = '\x1b\x3f\x0a\x00' # Reset printer hardware

+# Printer paper

+HW_PRINT_ROLL = '\x1B\x63\x30\x03' # 80mm roll, thermal

+HW_PRINT_SLIP = '\x1B\x63\x30\x04' # Slip / Cheque, dot matrix

 # Cash Drawer

 CD_KICK_2 = '\x1b\x70\x00'     # Sends a pulse to pin 2 [] 

 CD_KICK_5 = '\x1b\x70\x01'     # Sends a pulse to pin 5 [] 

 # Paper

 PAPER_FULL_CUT  = '\x1d\x56\x00' # Full cut paper

 PAPER_PART_CUT  = '\x1d\x56\x01' # Partial cut paper

+PAPER_SLIP_OUT  = '\x1B\x4B\xC0' # Eject slip or cheque

 # Text format   

 TXT_NORMAL      = '\x1b\x21\x00' # Normal text

 TXT_2HEIGHT     = '\x1b\x21\x10' # Double height text

 TXT_2WIDTH      = '\x1b\x21\x20' # Double width text

+TXT_4SQUARE     = '\x1b\x21\x30' # Quad area text

 TXT_UNDERL_OFF  = '\x1b\x2d\x00' # Underline font OFF

 TXT_UNDERL_ON   = '\x1b\x2d\x01' # Underline font 1-dot ON

 TXT_UNDERL2_ON  = '\x1b\x2d\x02' # Underline font 2-dot ON

diff -r 849dabb63ce0 escpos/escpos.py

--- a/escpos/escpos.py  Thu May 30 08:56:33 2013 -0700

+++ b/escpos/escpos.py  Sat Jan 18 15:14:30 2014 +1100

@@ -189,8 +189,8 @@

             self._raw(TXT_NORMAL)

             self._raw(TXT_2HEIGHT)

         elif height == 2 and width == 2:

-            self._raw(TXT_2WIDTH)

-            self._raw(TXT_2HEIGHT)

+            self._raw(TXT_NORMAL)

+            self._raw(TXT_4SQUARE)

         else: # DEFAULT SIZE: NORMAL

             self._raw(TXT_NORMAL)

         # Type

@@ -203,7 +203,6 @@

         elif type.upper() == "U2":

             self._raw(TXT_BOLD_OFF)

             self._raw(TXT_UNDERL2_ON)

-            self._raw(TXT_ITALIC_OFF)

         elif type.upper() == "BU":

             self._raw(TXT_BOLD_ON)

             self._raw(TXT_UNDERL_ON)

@@ -227,6 +226,15 @@

             self._raw(TXT_ALIGN_LT)



+    def paper(self, type='ROLL'):

+        if type.upper() == '':

+            self._raw(HW_PRINT_ROLL)

+        elif type.upper() == 'ROLL':

+            self._raw(HW_PRINT_ROLL)

+        elif type.upper() == 'SLIP':

+            self._raw(HW_PRINT_SLIP)

+

+

     def cut(self, mode=''):

         """ Cut paper """

         # Fix the size between last line and cut

@@ -234,6 +242,10 @@

         self._raw("\n\n\n\n\n\n")

         if mode.upper() == "PART":

             self._raw(PAPER_PART_CUT)

+        if mode.upper() == "FULL":

+            self._raw(PAPER_FULL_CUT)

+        if mode.upper() == "PART":

+            self._raw(PAPER_SLIP_OUT)

         else: # DEFAULT MODE: FULL CUT

             self._raw(PAPER_FULL_CUT) 

Untuk Cetak di Printer Epson Dot Matrix dan Agar Ukurannya bisa 1/4 Letter atau 1/2 Letter Menggunakan Bahasa Pemrograman Apapun

Gunakan fungsi page break di fast-report atau gunakan Character khusus untuk mengirim command ke printer seperti #12 untuk page break


Code Snippet :  CommandString = 'Hello, this is a test page!' + #10#12;

Specifically, the #12 character constant is the control character for a Form Feed, which is the command that an Epson dot-matrix printer like the LX-310 understands as a page break. The #10 character is a Line Feed, which moves the print head to the next line.


Contoh Untuk Delphi memakai di bawah ini untuk Cetak Draft

procedure PrintMe(Content: TStringList);

var

sPrinter, sDriver, sPort, sTitle: array[0..255] of Char;

hPrinter, hDevMode: THandle;

DocInfo1: TDocInfo1;

W: DWORD;

S: String;

C: Char;

I: Integer;

begin

// page-break

C := #12;


// initialize the document structure

with DocInfo1 do begin

pDocName := StrPCopy(sTitle, 'Your Title Here');

pOutputFile := nil;

pDatatype := 'RAW';

end;


// get the current printer (sPrinter)

Printer.GetPrinter(sPrinter, sDriver, sPort, hDevMode);


// open the printer

OpenPrinter(sPrinter, hPrinter, nil);

try

try

// start document to spooler

StartDocPrinter(hPrinter, 1, @DocInfo1);

StartPagePrinter(hPrinter);


// send the 'Source' to the printer

for I := 0 to Source.Count - 1 do begin

S := Source.Strings;

if not WritePrinter(hPrinter, PChar(S), Length(S), W) then

Break;

end;


// send a page-break to the printer (optional)

if not WritePrinter(hPrinter, @C, 1, W) then

Break;


// end the page

EndPagePrinter(hPrinter);


// end the document

EndDocPrinter(hPrinter);

finally

// close the printer

ClosePrinter(hPrinter);

end;

except

// abort the job

AbortPrinter(hPrinter);

raise;

end;

end;


https://www.tek-tips.com/threads/printing-text-on-dotmatrix-printer.921897/

Setting Printer Epson Dot Matrix Agar Urutannya Sesuai Meskipun Dokumen Sangat Banyak

 Pilih opsi Start printing after last page is spooler. lalu save, seharusnya cetakan akan sesuai urutan


Berlaku untuk LX-300, LX-310, LQ-310, LQ-2180, LQ-2190 dan kawan kawannya

[Fix Error] Kode Error 0x0000011b Windows 10 Sharing Printer

Kode error 0x0000011b muncul saat ingin melakukan sharing printer pada windows 10. Error tersebut disebabkan oleh update terbaru windows 10 2021-09 Cumulative Update for Windows 10 Version 21H1 for x64-based Systems (KB5005565).

Cara mengatasi problem tersebut yaitu :


Buka Windows Registry Editor (regedit)

Kemudian arahkan ke HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print

Kemudian buat DWORD-32 baru dengan nama RpcAuthnLevelPrivacyEnabled set Value Data : 0

Selanjutnya Restart PC / Laptop

Error 0x0000011b akan hilang dan sharing printer bisa digunakan kembali.


source : https://pdsi.unisayogya.ac.id/fix-error-kode-error-0x0000011b-windows-10-sharing-printer/

Mengatasi Ukuran Kertas Custom Yang Hilang di printer Epson setelah Restart Komputer / Print Spooler

Ukuran Kertas Custom Printer Epson
Ukuran Kertas Custom Printer Epson Dot Matrix/Laser Jet
Tutorial ini menggunakan Windows 7 akan tetapi bisa di gunakan untuk Windows 8, Windows 9 ataupun Windows 10.

Saya menggunakan printer EPSON LQ-2190 pada OS Windows 7, dan perlu penggunakan kertas ukuran Custom seperti 1/2 letter dan 1/4 Letter untuk form-form tertentu di perusahaan tempat saya bekerja sekarang ini. Akan tetapi setelah restart komputer ukuran kertas custom tersebut selalu hilang dan saya harus menambahkan manual ukuran kertasnya setiap kali komputer dinyalakan, ada 2 solusi yang saya gunakan

Solusi pertama :

Hidupkan Komputer terlebih dulu sebelum Printer (printer harus tersambung ke komputer meskipun printer dalam keadaan mati). Saya sudah mencoba cara ini dan sering berhasil

Solusi Kedua

Restart Print Spooler melalui Run > services.msc 

Cari print spooler > klik kanan lalu restart 

services.msc
Restart print spooler

Cara ini bisa dibilang memakan waktu jika user harus melakukan ini setiap waktu saat printer tidak bisa digunakan, maka bisa menggunakan bantuan file batch dari windows

silahkan copy kode dibawah ini lalu taruh di notepad, simpan dengan print_spooler.bat (.txt ganti ,bat saat menyimpan)

:: Firdaus

:: November5th 2016

:: Tutorial: https://ifirdausku.blogspot.com/

@echo off

powershell -windowstyle hidden -command "Start-Process cmd -ArgumentList '/s,/c,net stop spooler & DEL /F /S /Q %systemroot%\System32\spool\PRINTERS\* & net start spooler' -Verb runAs"

print spooler
Simpan dengan ekstensi .bat

 Jika sudah maka jalankan scriptnya, script ini perlu menggunakan administrator, maka dari itu tekan

Konfirmasi administrator user

Tekan yes maka scipt akan berjalan.

Jika sudah ada tulisan The print Spooler services was started successfully maka script sudah berhasil berjalan.dan silahkan cek lagi ukuran kertas maka sudah muncul seperti dibawah ini

Ukuran Kertas Custom Printer Epson
Ukuran Kertas Custom Printer Epson Dot Matrix/Laser Jet

Jika anda perlu waktu tunggu sebelum print spooler di start anda bisa menambahnannya di script seperti dibawah ini, timout 5 adalah waktu tunggu selama 5 detik

:: Firdaus
:: November5th 2016
:: Tutorial: https://ifirdausku.blogspot.com/

@echo off
powershell -windowstyle hidden -command "Start-Process cmd -ArgumentList '/s,/c,net stop spooler & DEL /F /S /Q %systemroot%\System32\spool\PRINTERS\*& timeout 5 & net start spooler' -Verb runAs"
Print Spooler Dengan TImeout
Print Spooler Dengan Timeout 5 Detik

 Silahkan komentar jika anda masih tidak bisa