大美餐饮收银系统


TRAWPrinter 的用法

<h1>TRAWPrinter - Direct Text Printing</h1> <p><strong>Delphi component for RAW or direct printing.</strong></p> <h2>Pendahuluan</h2> <p>Mencoba menjawab masalah pencetakan mode teks secara langsung (<em>raw/direct text printing</em>) yang sempat dibahas di milis Delphindo beberapa hari yg lalu, saya mencoba memberikan solusinya berupa komponen Delphi. Komponen ini bernama <strong>TRAWPrinter</strong>. 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 <em>IBM Passbook</em> dan <em>Epson LX</em> series printer secara <em>built-in</em>. Sebenarnya komponen ini sudah saya buat dan pakai sejak tahun 2002 untuk pencetakan kwitansi ke <em>IBM Passbook</em> printer (v.1.2). Kemudian beberapa hari yg lalu saya tambahkan dukungan pencetakan ke <em>Epson LX</em> series di v.1.5 ini.</p> <p>Berbeda dengan solusi umum pencetakan teks yg menggunakan cara mengirim teks langsung ke port printer (<code>LPT1:</code>), TRAWPrinter mengirim teks ke <em>spooler</em> printer di Windows. Akses ke <em>spooler</em> printer dari Delphi telah disediakan melalui unit WinSpool (unit standar). Keuntungan dari metode ini adalah printer yg kita tuju tidak harus terpasang di port <code>LPT1:</code>, printer yg terpasang di port lain pun (serial, USB, dlsb) tetap bisa diakses. Bahkan printer yg terpasang di jaringan (<em>shared printer</em>) juga bisa diakses dgn cara yg sama. Pengiriman data ke printer yg dituju adalah menjadi tugas dari <em>spooler</em> printer. Sehingga aplikasi di 2 komputer (atau lebih) bisa menggunakan 1 printer secara bersama-sama, dgn memanfaatkan <em>printer sharing</em>. Menarik bukan? :)</p> <h2>Penggunaan</h2> <p>Penggunaan komponen ini sangat mudah dan mirip dgn penggunaan unit Printers. Berikut adalah contoh penggunaan yg ada dalam aplikasi demo:</p> <pre><code class="language-pascal">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;</code></pre> <p>Adapun isi dari TMemo1 adalah sebagai berikut:</p> <pre><code class="language-html">&amp;lt;roman&amp;gt;roman&amp;lt;/roman&amp;gt; &amp;lt;courier&amp;gt;courier&amp;lt;/courier&amp;gt; &amp;lt;b&amp;gt;bold&amp;lt;/b&amp;gt; &amp;lt;i&amp;gt;italic&amp;lt;/i&amp;gt; &amp;lt;u&amp;gt;underline&amp;lt;/u&amp;gt; &amp;lt;s&amp;gt;strike&amp;lt;/s&amp;gt; &amp;lt;small&amp;gt;small&amp;lt;/small&amp;gt; normal &amp;lt;big&amp;gt;big&amp;lt;/big&amp;gt; &amp;lt;double&amp;gt;double&amp;lt;/double&amp;gt; &amp;lt;sub&amp;gt;subtext&amp;lt;/sub&amp;gt; &amp;lt;super&amp;gt;supertext&amp;lt;/super&amp;gt; &amp;lt;right&amp;gt;right-aligned&amp;lt;/right&amp;gt; &amp;lt;center&amp;gt;centered&amp;lt;/center&amp;gt; &amp;lt;left&amp;gt;left-aligned&amp;lt;/left&amp;gt;</code></pre> <p>Dan hasil pencetakannya ke printer <em>Epson LX-300+</em> adalah…</p> <p>![](<a href="https://github.com/git-bee/TRAWPrinter/blob/master/output.png">https://github.com/git-bee/TRAWPrinter/blob/master/output.png</a> &quot;TRawPrinter output result&quot;)</p> <p>Perhatikan isi memo dan bandingkan dengan hasil pencetakan! :) Betul… TRAWPrinter v.1.5 mendukung beberapa <em>tag</em> 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 <em>tag</em> HTML ini hanya bisa digunakan untuk method <code>WriteList()</code>, sedang untuk method2 lainnya harus menggunakan cara seperti berikut:</p> <pre><code class="language-pascal">  // 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');</code></pre> <p><em>See</em>… cara ini pun juga gak terlalu sulit, dan Anda tetap saja gak perlu menghapalkan kode2 ESC. <em>Property2</em> setting font dari TRAWPrinter gak jauh berbeda dari property TFont. Memang cara ini gak segampang menggunakan method <code>WriteList()</code> di atas. Tapi kadang -dalam situasi tertentu- kita membutuhkan kustomisasi yg lebih rumit daripada yg mampu dilakukan method <code>WriteList()</code>.</p> <h2>Lebih Lanjut</h2> <p>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.</p> <p>Untuk lebih detilnya, silakan Anda pelajari <em>source code</em> dari komponen ini.</p> <p>Selamat mencoba dan semoga bermanfaat.</p> <p>-Bee</p>

页面列表

ITEM_HTML