Direct Text Printing

March 28, 2006 at 4:24 pm | Posted in Code Samples, Components | 154 Comments

by: Bee

Mencoba menjawab masalah pencetakan mode teks secara langsung (raw/direct text printing) yang sempat dibahas di milis Delphindo beberapa hari yg lalu, saya mencoba memberikan solusinya berupa komponen Delphi. Komponen ini bernama TRAWPrinter. Awalnya komponen dibuat oleh Przemyslaw Jankowski (v.1.0) yg hanya berisi fungsi2 dasar pencetakan teks di win32. Kemudian saya kembangkan sedemikian rupa sehingga bisa digunakan lebih mudah dan mendukung pencetakan ke IBM Passbook dan Epson LX series printer secara built-in. Sebenarnya komponen ini udah saya buat dan pake sejak tahun 2002 untuk pencetakan kwitansi ke IBM Passbook printer (v.1.2). Kemudian beberapa hari yg lalu saya tambahkan dukungan pencetakan ke Epson LX series di v.1.5 ini.

Berbeda dengan solusi umum pencetakan teks yg menggunakan cara mengirim teks langsung ke port printer (LPT1:), TRAWPrinter mengirim teks ke spooler printer di Windows. Akses ke spooler printer dari Delphi telah disediakan melalui unit WinSpool (unit standar). Keuntungan dari metode ini adalah printer yg kita tuju tidak harus terpasang di port LPT1:, printer yg terpasang di port lain pun (serial, USB, dlsb) tetap bisa diakses. Bahkan printer yg terpasang di jaringan (shared printer) juga bisa diakses dgn cara yg sama. Pengiriman data ke printer yg dituju adalah menjadi tugas dari spooler printer. Sehingga aplikasi di 2 komputer (atau lebih) bisa menggunakan 1 printer secara bersama-sama, dgn memanfaatkan printer sharing. Menarik bukan? πŸ™‚

Penggunaan komponen ini sangat mudah dan mirip dgn penggunaan unit Printers. Berikut adalah contoh penggunaan yg ada dalam aplikasi demo:

procedure TForm1.Button1Click(Sender: TObject);
begin
  // empty printer name would print to default printer
  RAWPrinter1.PrinterName := '';

  RAWPrinter1.BeginDoc;  // start printing
  RAWPrinter1.WriteList(Memo1.Lines, true);  // print memo text
  RAWPrinter1.EndDoc;  // stop printing
end;

Adapun isi dari TMemo1 adalah sebagai berikut:

<roman>roman</roman>
<courier>courier</courier>
<b>bold</b>
<i>italic</i>
<u>underline</u>
<s>strike</s>
<small>small</small>
normal
<big>big</big>
<double>double</double>
<sub>subtext</sub>
<super>supertext</super>
<right>right-aligned</right>
<center>centered</center>
<left>left-aligned</left>

Dan hasil pencetakannya ke printer Epson LX-300+ adalah…

TRawPrinter result

Perhatikan isi memo dan bandingkan dengan hasil pencetakan! πŸ™‚ Betul… TRAWPrinter v.1.5 mendukung beberapa tag dasar HTML sehingga proses penyusunan teks yg akan dicetak menjadi lebih mudah. Anda gak perlu repot2 menghapalkan kode2 ESC untuk tiap jenis format teks. Fitur tag HTML ini hanya bisa digunakan untuk method WriteList(), sedang untuk method2 lainnya harus menggunakan cara seperti berikut:

  // font settings
  RAWPrinter1.FontName  := rfnCourier;
  RAWPrinter1.FontPitch := rfpCondensed;
  RAWPrinter1.FontStyle := [];
  // print text and move to next line
  RAWPrinter1.WriteLn('regular condensed courier');

  // font settings
  RAWPrinter1.FontName  := rfnRoman;
  RAWPrinter1.FontPitch := rfpExpanded;
  RAWPrinter1.FontStyle := [rfsBold];
  // print text and keep on current line
  RAWPrinter1.Write('bold expanded roman');

See… cara ini pun juga gak terlalu sulit, dan Anda tetap saja gak perlu menghapalkan kode2 ESC. Property2 setting font dari TRAWPrinter gak jauh berbeda dari property TFont. Memang cara ini gak segampang menggunakan method WriteList() di atas. Tapi kadang -dalam situasi tertentu- kita membutuhkan kustomisasi yg lebih rumit daripada yg mampu dilakukan method WriteList().

Bukan itu saja fitur2 yg ditawarkan TRAWPrinter, masih banyak lagi… seperti pencetakan berkolom, setting batas (margin) untuk kertas gak standar, opsi untuk menahan kertas setelah mencetak, dan lain sebagainya. Dan kalo bener2 dirasa perlu, Anda juga bisa mengganti kode2 ESC yg digunakan komponen, misalnya untuk jenis printer lain selain Epson dan IBM. Anda cukup membuat turunan dari class ini dan mendefinisikan ulang kode2 ESC yg sesuai dgn printer Anda.

Untuk lebih detilnya, silakan Anda pelajari source code dari komponen ini. File source code berikut demo aplikasi sederhana bisa didonlod disini (61 KB), atau ambil di repository file Delphindo.

Selamat mencoba dan semoga bermanfaat. πŸ™‚

154 Comments »

RSS feed for comments on this post. TrackBack URI

  1. Ndak Mutu Bangetttttttttttt

    • Apa kamu gak pernah diajari sopan santun? dikasih ilmu kalo gak suka ya pergi aja! Bagi orang lain ilmu diatas berguna lo!

    • Mana tulisanmu? semua ilmu pasti bermutu… pasti ada orang yang membutuhkan info ini. bagi yang membutuhkan ini sangat bermutu dan berguna

  2. Ga sopan loe, say…
    kalo loe emang punya yang lebih mutu, tunjukin dong. Jangan cuma ngomong doang bisanya.

  3. dicoba dulu yaa… kayanya berguna sekali neh!

  4. Menurut saya yang penting asal bisa mendukung printing yang bisa mengatur scrolling kertas dengan tepat & dapat dikerjakan secara programmable 100 %, termasuk mengatur ukuran kertas sesuka hati, hehehe.

    Yang masih saya cari adalah bagaimana menyimpan setting printer spt pada AcdSee. Kan, kalau bisa lebih baik kalau user tu ndak perlu tahu apa2 tahu2 dah beres. Jadi mereka bahkan nggak perlu setting printer deh. Kalau ada gambarnya, yah otomatis setting berwarna.

    Anyway, thanks a lot for the unit you have made for us. GBU =)

  5. bener kata eka ttg masalah scrolling.
    hal ini menjadi masalah jika kita ingin membuat program utk mencetak stroke seperti pada kasir swalayan ato wartel.mereka kan cuma butuh pjg kertas sesuai banyaknya data/item yg dprint.jd pjg kertas ga bs diset scr default (A4 misalnya) alias dinamis.pertanyaan saya gimana tuh mas Bee?TRAWPrinter udh bs mendukung ga?thx b4

  6. Saya mencoba dengan menggunakan methode SetPaperSize milik tPrinter. Namun, kok masih ada masalah ya?
    Kemudian saya mencoba mencetak dgn MS Word, ternyata untuk masalah scrolling tidak bisa ditangani hanya dengan mengubah setting size paper pada setup Printer. Harus dua-duanya, yaitu Page Setup yg mau dicetak & paper size pd setup printer.
    Yang saya heran, saya telah mengubah paper size pada page Rave Report saya secara dinamis, yaitu dg tRavePage. Namun kok tidak ada perubahan? Apakah size page pada report Rave tidak dapat diubah secara programmable?
    Oh ya, printer yg saya pakai adalah Epson LX-300.

  7. Kalo temen2 mau mempelajari source code dari component ini, sebenarnya component TRAWPrinter gak terikat sama sekali dgn setting ukuran kertas windows. Namanya juga RAW printing, semua control bener2 ada di tangan programmer. Component ini hanya membantu dan mempermudah coding-nya aja. Kalo cuma untuk cetak struk atau bahkan mau cetak di atas kertas A3 pun, bukan masalah buat TRAWPrinter. Link berikut adalah contoh hasil cetakan dari TRAWPrinter untuk mencetak struk: http://wishknew.modblog.com/?show=blogview&blog_id=639839

  8. saya coba pake rawprinter untuk mengeprint from bc 2.3 dari bea cukai, saya pake metode writelist dimana semua data yang akan diprint disimpan di stringlist. masalahnya setiap ganti halaman baru pasti ada loncat 2 halaman kosong baru kemudian ngeprint halaman selanjutnya jadi misalkan saya mo print 2 halaman maka hasil outputnya adalah halaman pertama utk data halaman pertama trus halaman kedua kosong dilanjutkana halaman ketiga.
    kira2 masalahnya apa ya? thnks

  9. @Dyah:

    Coba di-debug pada saat component ini melakukan printing, kemungkinan ada sedikit salah hitung panjang halaman. Atau ada setting margin property yg mungkin kurang pas (PageHeight?). Tapi aplikasi2 saya sebelumnya gak ada masalah meskipun untuk mencetak hingga ber-lembar2 halaman. Ma’af saya agak lupa, soalnya udah lama banget gak pake komponen ini lagi. Tapi itulah untungnya open source, Anda bisa cari dan perbaiki kesalahan yg ada. πŸ™‚

  10. cara instalasi komponen RawPrinter ini bagaimana ya? maklum saya masih baru dalam bidang delphi programming, jadi mohon petunjuknya. terima kasih. this site is soo good and mendidik banget, top abis d

  11. saya mencoba pake TRAWPrinter untuk print di Epson TM-U220B mini printer, tapi hasil cetakannya koq diawali karakter “00000”. Jadi, misalnya saya mencetak “coba” yg keluar di print out nya “00000coba”. Gimana cara mengatasinya? Thx.

  12. dan mendukung pencetakan ke IBM Passbook dan Epson LX series printer secara built-in

    Jelas… TRAWPrinter hanya support IBM Passbook ama LX series.

    untuk jenis printer lain selain Epson dan IBM. Anda cukup membuat turunan dari class ini dan mendefinisikan ulang kode2 ESC yg sesuai dgn printer Anda

    Hanya itu solusinya.

    • gimana cara nya dapetin ESC printer yang kita gunakan, saya gunakan EPSON TM-U220, butuh bantuannya yah… terima kasih..

  13. wah,.. thank’s atas artikelnya…

  14. Saya sudah sukses memakai RawPrinting ini untuk menangani masalah percetakan nota dgn printer DotMatrix. Saya pakai buat program toko swalayan.
    Yup, saya akui RawPrinting pada kode ini memang Oke punya. Namun, memang printernya harus khusus. Saya sudah mencoba pada Epson LX-300 dan jadi sesuai harapan. Namun, saya ganti ke Epson Stylus C41SX, dan hasilnya tidak sesuai harapan.

  15. Bee, product ini sangat berguna, thanks banget, saya juga sudah lama mencari sesuatu yang bisa print direct ke DOS.

    Keep up the good work bro

    Good luck

  16. @EkaDharmaP:

    Namun, saya ganti ke Epson Stylus C41SX, dan hasilnya tidak sesuai harapan.

    Duh… kan udah dibilangin, secara built-in TRAWPrinter ini hanya support IBM Proprinter dan Epson LX series. Jadi jelas kalo digunakan di printer jenis lain akan gak sesuai, soalnya perintah ESC-nya berbeda di tiap jenis printer. Kalo untuk printer jenis lain, silakan turunkan class ini dan definisikan ulang kode2 ESC sesuai dgn printer tsb. Kalo pengen tau kode2 ESC untuk printer Anda, buka dan baca buku manual dari printer tsb. Sebenarnya untuk mengembangkan komponen ini supaya bisa nyetak di jenis printer lain gak terlalu susah kok, tinggal mau apa gak aja. :p

    • bantuin dong mas gimana caranya dapetin ESC dari sebuah printer, program lama yang aku buat terlanjur menggunakan
      RAW Component ini, awalnya saya gunakan LX-300 hasilnya bagus gak ada masalah, trus client saya memutuskan ganti printer kasir
      menggunakan TM220, untuk menghemat tempat. pas saya gunakan
      keluar tulisan 0000 dilanjutakan
      ada solusi untuk hilangkan 0000. mohon bantuan yang sangat
      sangat sekali

      saya gunakan EPSON TM-U220, sudah saya cari di manual book nya, tetep aja gak ada. mohon bantuan yang sangat nih… dikejar waktu saya.

      • kalo buat tm220 dikosongin aja semua ESC nya di isi dengan ( := ” );

  17. Memang bagus, konsepnya hampir sama dgn komponen TDXPrint buatan Toth Paul (french).

    Nah, pertanyaan saya, jika kita memakai komponen QuickReport untuk fleksibilitas visualisasi report pada saat design time untuk kemudian – katakan – di kombinasikan dgn TRAWPrint agar bisa langsung berhenti di ujung akhir karakter pada saat runtime, bagaimana caranya?

    TRAWPrint dan TDXPrint hanya berlaku untuk pencetakan umum semacam struk. Bagaimana jika ada sebuah report dengan isi yang telah ditetapkan dengan model yang tidak sama seperti model struk.

    Misal:
    A|D
    C|D

    Tertulis karakter ABC dalam struk, dengan huruf A pada baris 1 dan huruf C pada baris 2. Huruf B diletakkan pada bagian kanan struk dengan font yg 2x lipat lebih besar dari huruf A dan C (huruf B di visualisasikan sebagai huruf D, lihat gambar diatas).

    Saya mengalami masalah seperti ini. Bagaimana solusinya?

  18. Makasih… bee, komponennya sangat bermafaat sekali. Sebagai informasi tambahan. saya menggunakan printer Panasonic KX-1180, komponen ini, tanpa perlu dimodifikasi, bekerja sangat kompatibel.

  19. to : Eko Wahyudiharto

    Bukan kah komponen ini telah mendukung tag HTML dasar. Kenapa tidak manfaatkan saja fitur tersebut untuk proses manipulasi tampilan struk yang akan dibuat …

  20. To : camodlgs

    Saya memimpikan sebuah komponen similar dengan TQReport dengan fitur RAW print. Apakah sudah ada yg mencobanya?

    Permasalahan sebenarnya yg saya hadapi selain pertanyaan saya sebelumnya adalah pengimplementasian aplikasi yg saya buat di Delphi untuk kemudian dijalankan di Linux via Crossover.

    Sayangnya, pelaporan menggunakan komponen TDXPrint dan TRAWPrint atau native Delphi sendiri – AssignPrn – tidak kompatibel karena keterbatasan implementasi Win API di emulator Crossover.

    Ada solusi dari teman2? Saya sudah hampir frustasi…

  21. Saya sangat tebantu sekali dengan artikel ini, dan saya sangat kagum atas kreativitas anda. namun ada pertanyaan saya mengapa komponen TRawPrint ini tidak bisa diinstalkan pada delphi 5?,mohon penjelasannya, karena ada beberapa aplikasi saya yang masih menggunakan delphi 5 terima kasih…

  22. lumayan juga, tp kalo untuk printer kecil seperti
    Epson TM-U220series, cukup pakai QuickReport dengan mengubah paper length secara dinamik sesuai item yang dicetak, kertas tidak nggulung terus tuh…

  23. buat bung bahrul azmi, sy juga pakai delphi 5 tuh, tapi nggak masalah coba komponen TRawPrinter. selain TRaw Printer, sy juga pakai unit dotmatrix, cocok untuk semua jenis printer dotmatrix asal pakai LPT, tapi hanya support win 98

  24. kertas di roll keluar dari printer memang sudah bawaan driver dr Windows
    dengan tujuan mendukung kemampuan windows dalam multipage printing biar
    tidak numpuk dlm 1 kertas.
    nah masalahnya gimana caranya untuk meng-escape kemampuan fasilitas itu ?
    bisakah fungsi berikut digunakan :

    int Escape(

    HDC hdc, // handle to device context
    int nEscape, // escape function
    int cbInput, // number of bytes in input structure
    LPCSTR lpvInData, // pointer to input structure
    LPVOID lpvOutData // pointer to output structure
    );

    nah kalau utak atik ini kayaknya Mr. Bee jagonya.
    sy dan mungkin temen2 yg masih pemula minta tlg Mr. Bee utk
    ngutak-atiknya
    trims sebelumnya.

  25. Bukankah TRAWPrinter udah bisa nahan kertas? Anda cukup setting property EjectOnFinish. Kalo pengen eject, set jadi TRUE. Kalo gak pengen eject, set jadi FALSE. Defaultnya bernilai TRUE. It’s that simple. Coba deh baca source code-nya untuk mastikan bahwa TRAWPrinter juga bisa nahan kertas.

    Trus, mau ngutak-atik apanya lagi?

  26. aku dah coba pake mas utk ukuran kertas standar (letter/folio) no problem.

    tapi saat aku pake ukuran kertas yg kayak diwarnet2 itu terus data yg dicetak panjangnya melebihi panjang kertas tsb hasil cetakannya kok bablas terus ya gak turun ke bawah seusai lebar kertas yg digunakan..

    gimana tuh…???

  27. wahhh, saya juga jadi banyak tahu setelah baca artikel ini, wahhh asiik nihhh gw mo coba ahh, mayan bt nambah duit saku tar klo gw dpt proyek, but download component nya dimana yachhh…

  28. Mau nanya seputar TRawPrint neh,
    gimana kalo misalnya aku mau ngeprint gambar atau image pake TRawPrint ?

    Thanks,

  29. Component yang sangat bagus, aku dulu pas buat report text, aku buat file text dan mengeksekusinya pake file batch, dengan adanya component ini yang mendukung tag html, jadi lebih mudah πŸ˜€

  30. @Bobby:
    Ngeprint gambar secara raw (menggunakan ESC code) dimungkinkan untuk beberapa jenis printer, misalnya Epson LX dan LQ series. Tapi gak semua printer dot-matrix mendukung untuk pencetakan gambar secara raw. Kalo Anda buka source code TRAWPrinter, pasti Anda akan menemukan satu procedure kosong yg memang saya siapkan untuk pencetakan gambar scara raw. Cuman krn gak ada waktu dan gak ada kebutuhan, fitur itu masih belom saya kembangkan. Kalo Anda mau, silakan kembangkan komponen ini. Itulah gunanya open source, semua org bisa mengembangkannya sesuai dgn keinginan. Tapi jgn lupa, kalo udah jadi, tolong share juga ke publik. πŸ™‚

  31. Saya ngak ngerti Delphi, saya lagi cari cara ngeprint dari Delphi direct ke LPT1 ato ke paralel port langsung. Kelihatannya sudah ketemu di sini.

    Ikut berpartisipasi, Saya coba sharing dari sudut pandang yang saya mengerti semoga melengkapi.

    Printer sesungguhnya terbagi sbb
    page printer = Deskjet, Inkjet, LaserJet
    line printer = dotmatrix, struk printer, pos printer

    Namun Windows “berusaha” mencetak secara page printer, walaupun printernya adalah “Line Printer’
    Sehingga software kasir (a.ka. POS software) dengan bagus, pas cetaknya harus tunggu transaksi selesai baru dicetak (Page Printing).
    Padahal Line Printer bisa membuat anda mencetak seperti di Caref**r.

    Printer Langague
    Sesungguhnya printer juga terbagi atas.
    1. Printer dengan Native Language
    2. Grafik printer

    Contoh Printer Native Langague adalah
    a. ESC & “ESC2”, atau dikenal juga ESC Command dari EPSON
    b. PCL, terdapat di HP yang ada embel2 PCLnya
    c. ZPL, di printer Barcode/Label merek ZEBRA (iklan nih dikit)
    d. Bahkan sudah ada printer yang mengerti bahasa XML (baca:ZEBRA)

    Jika anda ingin mencetak banyak dan cepat, adalah kewajiban untuk memaksimalkan “Bahasa Printer ini”. Maka “mimpi buruk” yang terjadi pada saat kita mencetak Excel ke LX300 – yang luaaama banget -, tidaklah terjadi pada program anda.

    Dan caranya, semoga terjawab dengan mempelajari (bukan menggunakan) component “TRAWprinter” ini

    Rasanya TRAWPrinter bertugas memudahkan anda untuk tidak perlu “kursus bahasa printer”.
    Jadi saya perlu pelajari dulu, permisi.

  32. mas …kalo pake rawprint untuk membesarkan font
    pakai perintah apa yach …

  33. saya dulu klo gak salah pernah buat print untuk strok..cukup gunakan quick report dengan diatur ukuran kertas custom hasilnya bagus..bisa sesuia isi panjang detail datanya…

  34. lha klo saya punya problem beda dikit :p
    kita baru beli program dari BSS, printer pake epson kasir (driver pake generic / text only.
    masalah muncul pas selesai print kertas ngga nggulung keatas, jadi klo kertas di sobek tulisan jumlah dan hasil printing bagian akhir ga ikut ke sobek, mo bongkar program ga ngerti blas (bukan programer, cuma user :P) jadi kita harus tekan feed dua kali baru sobek nota .. ga efisien … 😦 minta pihak software kena charge gilaΒ²an lagi :((

    ada cara setting manual ga (di printer properties, kiraΒ² di menu paper size select atau di paper feed selection >) biar kertasnya molor dikit, tambah 4 line gitu … πŸ˜€ (menu unprintable margin ga ada pengaruhnya klo cetakan dah berhenti)

    please bantu ya … pm aja di pengenlagi@yahoo.com
    thanx

  35. Thanks n salute to bee. karena akhirnya project print struk-ku dapet selesai. itu karena Trawprinter tsbt. sedangkan aku menggunakan printer LX300+II dan dapat berjalan dengan lancar. Meski pengalaman pertama dalam mengeprint struk langsung bisa hehe….hehehe….

  36. mas..met malem,

    saya kebetulan dapat orderan buat program kasir
    yg harus bisa ngeprint pake printer epson tm220.
    gimana caranya ya..?? saya pake delphi6.

    thanks ya..

    email saya : bmcdps@yahoo.com

  37. Nanya Nich…….
    msh bingung dengan raw printer…
    tolongin dong….
    agar kertasnya berhenti stlh mencetakk sesuai dengan ukuran kertas keinginan kita perintahnya gmn?

    pagewidth, pagelenght kok gak mau….

    tolong kasih sourcenya ya….

  38. page height maksudnya….

  39. kirim ke or4n3@yahoo.com

    Thanks berat sebelumnya…

  40. mas..met malem,

    saya kebetulan dapat orderan buat program kasir
    yg harus bisa ngeprint pake printer epson LX 850.
    gimana caranya ya..?? saya pake delphi6.

    thanks ya..

    email saya sumpekdotkom@yahoo.com

  41. Gini lho saudara2 masalahnya custom size paper tergantung printer manufakturnya. Find it:
    GPD associated with the printer. Look in \windows\inf\ntprint.inf
    for the model name. The GPD is located in
    \windows\system32\spool\drivers\w32x86\3

    “Epson LX-300” = EPLX300.GPD
    ,EpsonEpson_LX-3005681,Epson_LX-300
    “Epson LX-300+” = MS_EPLX300P.GPD
    ,EPSONLX-300+7C5D,Epson_LX-300+

    Nah begitu d ceritanya lalu coba baca ini:
    *Option: CUSTOMSIZE
    {
    *rcNameID: =USER_DEFINED_SIZE_DISPLAY
    *MinSize: PAIR(8400,6996)
    *MaxSize: PAIR(10200, 16800)
    *MaxPrintableWidth: 10200
    *PageProtectMem: 1692
    *switch: Orientation

    So what u think? Coba pake xls lalu cetak ke epson lx-300 dg custom paper size gak bisa kan… nah kenapa di msword bisa? siapa yg nggak support? printer atau code.

    Nah kalau bikin tombol cetak di sheet kalau di klik bisa cetak sesuai ukuran kertas untuk range yg sudah ditentuin gimana? klik aja tombol cetak langsung nyetak di lx-300 sesuai ukuran kertasnya continues form pendek2 dari range terange gimana hayoo! yLew3@yahoo.com
    Gitu aja repot.. beli LX-300+ kata dia fuk it..

  42. Aku dah berhasil pake RawPrinter.. utk mencetak dan berhenti sesuai dgn yg diinginkan… permasalahanny skrg adalah bagaimana mengatur jarak baris satu dengan dengan baris yg selanjutnya agar bisa diatur…

    thanxs

  43. as

  44. Cuma mo nambahin.

    Berdasarkan pengalaman (ato mungkin krn kurang pengetahuan saya) ketika saya mencoba menggunakan unit Printers, bila melakukan cetak ke printer dot matriks kertas akan menggulung terus. Dan kelemahannya (setahu saya) tidak bisa diberi coding khusus (seperti untuk potong kertas secara otomatis spt pada Star SP300).

    Kalo saya biasanya untuk cetak ke printer dot matriks menggunakan command prompt bawaan windows shg kelebihannya bisa digunakakan di hampir semua OS Windows, spt untuk Win98 & XP (Tested), mungkin juga untuk win2000 (tapi saya belum coba).

    Prinsip kerjanya hanya :
    1. Saya tinggal menyimpan sementara file yang akan dicetak, misalnya print.txt
    2. command prompt-nya :

    command.com /c type print.txt > PRN

    PRN artinya default LPT1 (bisa diganti LPT1)
    kalo printernya dishare, PRN diganti dengan \\nama_komputer_server\nama_printer, mjd :

    command.com /c type print.txt > \\nama_komputer_server\nama_printer

    3. untuk coding di delhinya anda bisa menggunakan shellexecute bawaan dari ShellApi. Jangan lupa tulis ShellApi di uses-nya.

    Berdasarkan pengalaman saya proses printing-nya lebih cepet.

    Semoga bermanfaat.
    Anoedie

  45. Oh ya lupa, command tadi untuk printer yang melalui LPT, Kalo untuk serial dan USB saya menggunakan cara laen.

    Anoedie

    • Klo ke printer USB bgm ?? (sy pake printer LX 300 II konektor USB) krn di komputer yg sy pake ga ada LPT port nya..

  46. bos kalo d gabung ma quick report bisa kaga bos?!?!?
    kalo bisa gmn cara na bos!!!?!?

  47. ama cara intall k delphi na juga bos!! thanks

  48. kalo perlu bikin programnya juga

  49. Sklep komputerowy z tanimi czesciami komputerowymi:
    sklep komputerowy

  50. Kalo cara mengubah spool setting gimana yach? dari direct ke spool dan sebaliknya

  51. Pake Printer TM-U220B untuk Cetak berbagai Jenis Font Ga masalah.. tapi.. untuk Auto Cutter aku masih bwermasalah… ada solusi ga ya???

  52. pagi saya kesulitan seting kertas pd lx 300+ saya dah punya ukuran kertas 21 X 10 cm tuk kwitansi pembayaran. coba gimana nyeting kertas pada print tersebut pake Access 2003

    intinya pake data report ms acces 2003 printer epson lx300+ dah oke, tinggal cetak pk kerta 21 X 10 cm. dimana kertas tersebut saling terkait dibatasi Tanda(- – – – – – -)

    gimana saya bisa seting kertas tersebut 21 X 10 cm
    sedangkan di page setup acces tidak ada setingan yang demikian ? makaisih

  53. trim’s atas info TRawprint or TDxprinter…. πŸ™‚

  54. Kalau digunakan untuk printer selain dot matrix, apakah bisa ukuran fontnya disesuaikan dengan keinginan kita? (mau font paling besar)

  55. Terimakasih mas…bee..atas info-nya..soal RAWPrinter..saya dah lama mencari komponen seperti ini..Thx yah..di tunggu info n ulsan komponen2 lainnya..

  56. saya pakek dxprint. tp bagaiman cara set panjang kertas,lebar kertas, posisi font, jenis font, ukuran font, apa set nya termasuk didalam coding saat eksekusi perintah writel???? tolong dong bantu saya…. 😦

  57. saya ada masalah untuk pencetakan kwitansi pembayaran mahasiswa, untuk mode text aja tidak masalah, tapi kalau digabung dengan image untuk tanda tangan bendahara jadi bingung bagaimana caranya. ada yang mau bantu….please….

  58. haluu…
    ada yang tau gmn caranya ngeprint struk kayak di kasir ga,yang printernya berhenti setelah baris terakhir diprint, klo pke bahasa pemrograman PHP?
    yang saya lihat, pada pke delphi ya…
    klo pke php gimana caranya?
    mohon bantuanna ya….

  59. ok deh gw coba dulu ye coy…

  60. Loh, koq pada bingung ngeset kertas di printer dot matrix sih?… dan gimana bisa posting gw di kueputu.wordpress about ada disini?
    Gini saudara-saudara…:-) cek your printer on start-printer and faxs klik file-server properties! hv u ever check that? even thousand time you enter pint button. Well.. go set new form, kasi nama terserah.. lalu nama terserah itu bisa ada di custom size whatever aplikasi office you have!
    hmmm…

  61. Saya baru mencoba menggunakan trawprinter untuk program kasir. Tetapi kalau data yang diprint cukup banyak (misalnya : 35 baris) baris terakhir tidak ikut dicetak. Bukankah panjang halaman trawprinter bebas ?
    Mohon bantuannya, mungkin ada yang perlu disetting lagi.

    Trimakasih.

    NB : Saya menggunakan printer Epson TM-U210D

  62. Baca aja udh seneng… kadang geli.. kadang ora mudeng alias gak faham.
    Lama ga pake delphi, mau balik lagi malah bingung, pdhl pake VB banyak masalah juga. Akhirnya balik ke pemrograman jaman batu.

    Thank for all comments.. Lumayan nambah wawasan

  63. mo tau nich dr quick report mo print pke continous form gmn yach,,coz ps d c0ba hal pertamanya bner tp ps msk ke hal berikutnya langsung turun hal berikutnya lbh turun lagi…gmn yach…??

  64. saya dah nyoba pake trawprinter pada printer TMU 220 pake port serial, hasil print nya kok ngaco yah… ada angka2 yang gak dikenal..
    mohon bantuannya yah yg pernah pake TMU 220 menggunakan Trawprinter..

  65. 100% working
    matur tengkyu mas

  66. lupa
    pakenya LX-300+II,konektornya USB

  67. Thanks atas bantuannya
    utk setting printer dot matrik pada delphi

  68. dear friends, ada yang tahu tidak cara pakai printer epson lx-300 tapi pake USB ke Paralel ,soalnya saya gak bisa,thanks !

  69. tolong bantuan untuk ke Epson TMU 220

  70. bos gw dah pake komponen trawprint untuk epson tm-u220PD,tp ada sdkit mslh,kadang2 printer bhenti sendiri tanpa ada pesan error,pdhal struk blm selesai dicetak.dan hal itu pun nga terjadi pada semua printer,saya menggunakan ini pada 30 toko,ada toko yg bisa jalan ada yg 100% mulus,kadang klo sya tukar printer ada yg mau ada yg nga….kumaha ya….?sbg catatan:setiap PC di toko berdampingan dng program POS lain yg FoxPro based…apa ada mslh disitu nga ya….selain itu,trus sya juga udh definisikan esc command untuk Epson seri TM. TRawprint is Great…mohon penceraannya..(bila nga keberatan tlng di reply ke email sya bos..thx)

  71. saya punya sedikit masalah soal print struk menggunakan raw.
    print sudah berhenti pada saat akhir, tapi masalahnya dengan menggunakan printer LX-800 print nya jadi lebih lebar.
    gmn solusinya ya??!

  72. kalo untuk vb6 sich gampang tinggal fontname nya diganti dengan control terus kasih perintah printer.print “A”
    pasti drawer nya kebuka tapi kalo buat delphi aku ngak tahu, terus kalo boleh aku minta tolong di jelasin cara print hurub ukuran besar di tmu-220 untuk program cliiper atau minta code esc P2 Nya …… makasih sebelumnya

  73. untuk nic tolong periksa kabel lptnya kadang tidak sesuai konfigurasi kabelnya, ini sering saya alami kalo saya pake program IS (Itegrated System), Hatur nuhun….

  74. MAS KALOK PAKEK ORACLE BISA GAK

    PROGAM TROWprinter-nya

    aq da masalah ni ma kertar struk

  75. om..aku bingung nih..gmn caranya ngeprint pakai printer dot matrix Epson LX800..continous form… kalo ada yang punya codenya minta donk…. aq mohon dengan sangat nich…. coz buat tugas akhir

  76. Om Aku pengen set kertas untuk continous Form ukuran 9.5 x 14 cm ( printer Epson LX 850 ) gimana yach om…. makasih

  77. malem bos,
    Aku butuh bantuan banget nich, aku pakai windows xp dengan ms excel dan sering ngeprint dengan printer dot metrik LX-300+ atau LQ 2180, masalahnya timbul saat aku cari ukuran kertas custom pada exel, ternyata pilihan custom tidak ada, dulunya aku pakai windows 98 tidak ada masalah.
    bagaimana caranya agar bisa ngeprint dengan ukuran kertas sesuai kondisi yang ada (custom) pada program exel pada windows xp ? dengan tidak merubah kembali ke windows 98 tentunya.
    trims atas bantuannya

  78. oh yaa, kalau pake kode-kode itu ngetiknya apa melalui promp dos ? atau melalui program lain, trims

  79. mas aq mo nanya aq kan pakle component ini buat bgeprint nota tai kok masih nggulung ya di continues form 8.5X5.5 (LX-800) tapi kok masih nggulung ya setelah ngeprint padahal properties ejectonfinish nya uda tak buat false…. solusinya gimana ya???

  80. thanks untuk sourcenya ya bos…:)

  81. boleh minta source juga nga tmn2…
    atu dimana dwnld source ato komponennya yah..
    thx a lot

  82. Buat Kertas Custom pada LX-300+
    1. Ke Printer And Faxes
    2. Pilih File-Server Properties
    3. Klik Create a new form
    4. Isi Form Name-nya..misalnya:Setengah
    5. Isi Width & Height(Ukuran Kertas yang diinginkan)
    6. Klik Save Form
    7. Uda beres&ntar ada tambahan ukuran kertas tsb..:-)

    Setauku kalo LX-300 ga bisa,..kalo LX-300+&LX-300II bisa..

    • Makasih Boooossssssssss!
      You’re wonderful.

  83. Bee, boleh tahu cara ngubah esc charakternya soalnya aku ngprint pake tmu-220 selalu ada karater aneh didepanya.. mis “00000Tesprint”,
    gimana cara menghilangkan kode “00000”, atau koding apa yang saya harus tambahan. trim’s

    • sampai sekarang kok belum ada yang kasih tau ya ???
      padahal aku juga perlu banget..
      buat Bee… bantuin kita dong

      • saya udah coba pake epson tmu-220 mas alf,
        saya pake tprinter… gak ada masalah tuh….
        caranya saya load file .txt-nya ke memo1

        memo1.loadfromfile(‘CetakBe.txt’);
        //setting huup disini
        printer.font := ‘Courier’;

        //trus mulai ngeprint deh pake :
        for I:=0 to memo1.lines.count-1 do
        begin
        printer.canvas.textout(0,0,memo1.lines[I]);
        end;

        nah begitulah kira2.Mohon maaf klo ada salah2…wong namanya juga dikira-kira

  84. hi..

    utk kabel data dari port com ( db9 ) ke port db 25 di printer ada yang punya konfigurasi kabel nya??

    thx

  85. Component ini bagus.
    Tapi coba kasih margin misal 10 atau berapa deh.. ntar waktu cetakan halaman berikutnya eh.. kok geser ke kanan.

    yang saya lakukan:
    solusinya margin tetep 0 saja.
    terus textnya tambahkan space sebanyak margin yang dibutuhkan
    misal:
    var
    x:string;

    x:=’ ‘;
    rawprint.writeln(x+’text yang diprint’);

    kira2 gitu.. deh.. kecuali ada solusi lain dari creator atau modifatornya. hehehehehe.

  86. epson lx 300+ knp yaaa??? koo ngga mau ngeprint sampe selesai hanya setengah2 dan kadang lompat2 ngeprint nya… yg tengah ngga ke print???

    mohon bantuan & pentunjukNya…, makasiiiH ^_^

  87. epson lx 300+ knp yaaa??? koo ngga mau ngeprint sampe selesai hanya setengah2 dan kadang lompat2 ngeprint nya… yg tengah ngga ke print???

    mohon bantuan & pentunjukNya…, makasiiiH ^_^

    bandoronamaku@yahoo.com

  88. kebetulan lagi butuh nih komponen seperti ini…
    saya coba dulu ya, berhasil atau tidak, saya kasih kabar lg…
    tp seblumnya, terima kasih banyak untuk komponen ini…
    sukses ya…

  89. Hhheeelllppp…. mmmeee
    Gw mo nginstal printer epson LQ2180, tp sayangnya PC gw ga ada konektor buat LPT1 nya… klo gw sambungin pake LPT1 to USB konverter bisa jalan g ya?

    Everyone help me….

    Gracias…

    • Bisa… Saya pakai itu. saya beli harganya dulu 50rb. tanpa driver

  90. tlg bnt ya? utk cetak nota kasir dg LX-800 dg krts gulung, kok mesti stlh cetak nota menggulung. Gmn cr settingnya biar cetaknya cuma sesuai dg kbthn nota aja, biar tidak gulung. sy pake foxpro 6. tlng bantu ya.
    Setting printer apa bth source codenya? suwun

  91. hallo ahli2 delphi aku mau tanya kalo print pake double folio pake qreport pada mode landscape
    yang kecetak cuma separo saja, caranya gimana ya supaya bisa full.
    ok tak tunggu jawabannya.

  92. Mas bee,
    untuk mendefinisikan esc command printer tm-220 gimana ya??
    mohon bantuannya.

  93. Sejak saya coba component TRawPrinter 2 thn lalu sampe sekarang gak masalah.
    Klien sy jadi ndak perlu beli pos printer yang harganya mahal, cukup pake LX300 versi lama maupun baru yang sdh pake usb.

    Om BEE, tak tunggu kreatifitasnya untuk komponen yang lain.

  94. Ada yang tau gak cara merubah ukuran font size dengan TRawPrinter ini.
    Please tolong bantuannya…

  95. informasi sangat bermanfaat

    thx

  96. minta tolog, nih. kantor baru beli EPSON LQ 2180. Tapi saat diprint pake program gaji, klo gak salah pake foxpro, tidak bisa ngeprint. padahal klo pake word bisa. kenapa ya? tlg banget….

  97. q cuma bisa mbaca aja… soale ga ada yang dipahami.. hik2x
    tq infonya. ini lg ada tugas bikin mesin kasir,

  98. Saya cari component TRawPrinter kok gak ketemu ya boss?
    Minta tolong kasih linknya lagi boleh boss?

    Terimakasih
    -peter-

  99. Apa ada komponen untuk delphi 2009, karena sudah ta coba versi orang2x cara install komponen nga berhasil. Pakai Package trus loading file .pas. Susah delphi ini.

  100. Sob, bisa minta link yang lain buat download komponen ini, link yang di atas udah ex, udah cari2 di google belum nemu juga. Perlu bgt ini, makasih….

  101. Mohon penjelasan, bagaimana cara untuk merubah ukuran font pada TRawprinter.

    salam hormat,
    Ady

  102. buat yang butuh kesulitan cari link download, coba di
    Moga bermanfaat.
    Thx berat buat mas Bee dan juga admin situs ini.

  103. Ada ga ya komponen yg sama tapi untuk VB6 😦
    pls hlp klo pnya info …

  104. Halah, kebiasaan kalo ada yang tanya
    itu mbok ya dijawab yang bener!!!

  105. gimana cara spy bisa print per 5 item pada kasir?
    pake direct printing kok ga bisa yaa, mesti print setelah selesai semua.
    GImana cara hilangin karakter 00000 kl menggunakan rawprinter, printer saya TMU210D.Kl pk escape code gimana nulis di delphi nya?contoh code nya?
    thx u

  106. mas Bee,mohon pencerahannya atas pusingnya kepalaku seting LX 800 ku.aku beli program kasir,programnya udah cocok,cuma masalahnya pada cetakan struk,tiap kali mau cetak struk,mesti printer scroll naik 2 baris dulu dan setelah selesai cetak struk scroll 2 baris lagi, jadi struknya terlalu panjang dan tampilannya kurang bagus karena ada baris kosong di tengah struk.minta tlg bantuannya.tlng balas ke e-mailku.thx

  107. lebar space dan hurup ko tidak sama yach di direct printing.
    ada yg tahu cara setting supaya sama jadi biar rata klau dicetakannya

  108. nice

  109. bisa minta conth source code buat ngeprint format kolom gak,., lagi butuh ne gan? soalnya klo pake RAWPrinter1.WriteList, aligmentnya berantakan,.,.(buat ngeprint) nota biar lebh rapi gitu,., mohon bantuannya., ane pake delphi7
    de_te_ch@yahoo.com

  110. g bisa di donlot lagi gan, tolong gan link nya saya tertarik dengan pembahasan ini, terima kasih sudah berbagi

  111. saya buat laporan pencetakan khs, menggunakan delphi printer lq-2180, untuk ngepirnt lewat quickreport nggak masalah, masalahnya adalah ketika masuk ke lembar berikutnya, textnya melewati batas sobekan kertas saya pake kerta jenis rool, gimana cara pengaturan panjang kertas agar tercetak tidak melewati batas kertas jika mencetak lebih dari satu halaman sekaligus…? makasih sebelumnya…

  112. Gan, Tolong donk Script PHP Programming tuk setting kertas dan kirim data langsung ke Printer tanpa view data ke browser. Soalnya Klw View Slip Gaji kan Panjang kalau karyawan 1000 lebih dan browser berat loading tuk menampilkan jadi saya ingin langsung kirim ke Printer Saja. Kertas yang saya gunakan jenis letter (lebih pendek dari A4) dan Printernya LX-300+

  113. tengkyu

  114. Mas kok semua pada pake delphi. Mas tolongin dong bagaimana kalau kita pakai ms accsess apakah Trawprinter bisa digunakan. soalnya saya kebingungan nih lagi buat program kasir pake Ms Access tapi ketika print ke printer Epson TMU220 tidak berjalan sesuai harapan. mohon pencerahan dari teman2.

    Tx b4

  115. mas sy punya lx 800, utk internal font nya gmn settingny, thx….

  116. kalo kita buat reportnya pakek fastreport gimana neh caranya agar auto scroll…?

  117. makasih info.a mas bro,,!
    tapi mungkin saya terlalu bodoh, jadi te ngarti ato gag mudheng dengan yang seperti ini,,,!
    hehehe…!
    Saya lagi punya masalah kenapa printer saya sudah saya default paper size.a..!
    tapi tiap kali saya mau print mesti pilih lagi ukuran kertas.a secara manual,,,!
    dan karena itu kertas gag mau berhenti sesuai ukuran kertas tersebut..!
    thanks…!

  118. bagaimana mengganti LPT 1 PRINTER MENJADI LPT3 PADA PROGRAM FOXPRO

  119. BAGAIMANA MENGGANTI LPT 1 MENJADI LPT 3 PADA PROGRAM FOXPRO

  120. mas mau nanya ane punya dot matrix tp pas print tulisannya beda sm yg dibuat?
    tulisannya itu !!!&*??!## ky gitu, itu gimana mas?

  121. Mas ada gak rawprint yang support delphi xe2? Kalau ada bisa kasih tau linknya atau solusi lainnya?

    • Mas Ade. Udah dapet componen yang pas untuk XE2? Kebetulan aku juga lagi nyari πŸ˜€

  122. Om Bee, Source nya dah ga bisa di donlot… bisa minta share nya lagi ga.. anybody have the source please share…

    Tks.

  123. Master Bee, gimana cara di delphi supaya trawprinter bisa auto cutter ya?pake kode apa?thanks

  124. Master Bee,tlg ngajarin di delphi pake TRawprinter buat auto cutter nih?ga ngerti pakenya… thanks

  125. gan, ada source code untuk cetak kertas continous form di printer inkjet?

  126. kalau pakai Epson TMU220 kok setiap baris baru selalu diawali karakter 0000, gimana cara mengatasinya ya? makasih sebelumnya

    • Bikin sendiri ESCnya. Ada di buku manual printernya. Aku udah bikin sih, nambahin satu prosedur.
      Ini yang punya blog kagak ada ya? Mau pake di delphi XE3 kagak bisa nih.

  127. bagimana cara mengguna printer epson lx 310 untuk buat program kwintansi penebangan

  128. saya mau tanya,,, bagaimana cara mensetting font yang ada pada dekstop agar bisa di cetak pada printer passbook ibm ,,,,terima kasih….

  129. Salam,, saya mau tanya, kalau perintah ini bisa digunakan gak untuk printer Star SP300?
    saya pake port LPT ,,
    Terima kasih sebelumnya..

  130. bro, mau cetak serial number di printer bar code pake trawprinter bisa ga?printer barcode argox.. thanks

  131. Bagi yg masih membutuhkan komponen TRAWPrinter ini, bisa diunduh di URL berikut: https://www.dropbox.com/sh/342vvqnfje5kxd3/S3umU_e9dZ/RAWPrinter.zip

    Semoga bermanfaat. πŸ™‚

  132. Terima kasih, saya mau pelajari tools ini, dan sangat bermanfaat buat saya, tar kalau ada kendala saya mau tanya-tanya pak,

  133. ada masalah ni …. bentuk hurufnya di komputer dengan di struk kok berbeda, saya menggunakan epson lx-300+II ,,,,, untuk loket pembayara ( PPOB ) apa masalah ni ?

    • kasih tau dulu dong … penting bgt

  134. saya mau tanya mas bro,,, gmn cara membuat printout menjadi 3 kolom pada satu lembar. Mohon pencerahannya. Terimakasih

  135. […] PDF File Name: Direct text printing – delphindo on wordpress | delphi Source: delphindo.wordpress.com Β» DOWNLOAD Β« […]

  136. Artikel dan source code dipindah ke: https://github.com/git-bee/TRAWPrinter/tree/master πŸ™‚

    • Eh, salah paste, ini yg bener: https://github.com/git-bee/TRAWPrinter

    • Kalau boleh tau emang supportnya sampe delphi versi berapa master….??

    • Ada gak yang support sampe delphi xe6 master…??

    • mas bee, bisakah component ini ditambah bisa cetak barcode.

  137. mas bee, bisakah component ini ditambah bisa cetak barcode.


Leave a reply to rafa Cancel reply

Blog at WordPress.com.
Entries and comments feeds.