iTEXT: Menggambar Ke File PDF


iTEXT dapat membuat gambar barcode secara otomatis. Ia menyediakan beberapa class untuk merepresentasikan barcode seperti Barcode128, BarcodeInter25, dan Barcode39. Berikut ini adalah contoh membuat barcode yang merepresentasikan kode “BARANG BAGUS”:

PdfWriter writer = PdfWriter.getInstance(
  document,
  new FileOutputStream("c:\\latihan.pdf"));
document.open();

Barcode39 barcode = new Barcode39();
barcode.setCode("BARANG BAGUS");
document.add(barcode.createImageWithBarcode(
  writer.getDirectContent(),
  null, null));

Untuk menggambar secara bebas ke PDF melalui iTEXT, aku dapat menggunakan PdfContentByte. Pada coding di atas, aku mendapatkan PdfContentByte melalui writer.getDirectContent(). Untuk mendapatkan contect layer yang lebih bawah (yang akan ditimpa oleh directContext), aku dapat menggunakan writer.getDirectContentUnder(). Pola penggambaran pada file PDF diwakili oleh tujuh aksi yaitu:

  • moveTo(x,y), memindahkan posisi ke koordinat (x,y).
  • lineTo(x,y), memindahkan posisi ke koordinat (x,y), serta membuat segmen garis dari koordinat semula hingga koordinat (x,y).
  • curveTo(x1,y1,x2,y2,x3,y3), memindahkan posisi ke koordinat (x3,y3), serta membuat kurva Bezier berdasarkan control point (x1,y1) dan (x2,y2).
  • curveTo(x2,y2,x3,y3), memindahkan posisi ke koordinat (x3,y3), serta membuat kurva Bezier berdasarkan control point yang terakhir dipakai dan (x2,y2).
  • curveFromTo(x1,y1,x3,y3), memindahkan posisi ke koordinat (x3,y3), serta membuat kurva Bezier berdasarkan control point (x1,y1) dan (x3,y3).
  • closePath(), menutup subpath dengan menambahkan segment garis dari posisi sekarang ke awal dari subpath.
  • rectangle(x,y,width,height).

Jangan lupa bahwa setelah digambar, pola harus diberi warna atau di-cat, misalnya dengan method berikut:

  • stroke(), memberi warna pada garis (tidak men-fill bentuk).
  • closePathStroke(), sama seperti melakukan closePath() diikuti dengan stroke().
  • fill(), mengisi sebuah bentuk dengan warna.
  • eoFill(), mengisi sebuah bentuk denga warna dengan even-odd rule.
  • fillStroke(), sama seperti melakukan fill() diikuti dengan stroke().
  • eoFillStroke().
  • closePathFillStroke(), sama seperti melakukan closePath() diikuti dengan fillStroke().
  • closePathEoFillStroke().
  • newPath(), mengakhiri path tanpa memberi stroke atau fill.

Secara default, koordinat yang dipakai iTEXT berdasarkan pada titik (0,0) di pojok kiri bawah (berbeda dengan Graphics2D milik Java). Berikut ini adalah contoh menggambar bentuk bintang di PDF:

PdfWriter writer = PdfWriter.getInstance(
  document,
  new FileOutputStream("c:\\latihan.pdf"));

document.open();

PdfContentByte cb =
  writer.getDirectContent();
cb.moveTo(100f, 300f);
cb.lineTo(300f, 300f);
cb.lineTo(100f, 200f);
cb.lineTo(200f, 400f);
cb.lineTo(300f, 200f);

cb.setColorStroke(Color.BLUE);
cb.closePathStroke();

Jika seandainya bintang di atas di fill dengan method closePathEoFillStroke(), bagian tengahnya tidak akan di-fill sehingga terlihat perbedaan overlap-nya. O ya, PdfContentByte juga menyediakan sejumlah fungsi untuk mempermudah dalam menggambar bentuk dasar, seperti circle() dan ellipse() (jauh lebih mudah ketimbang harus membentuk lingkaran dengan curveTo()).

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: