ByPass Print Dialog at Jasper Report
Buat teman-teman yang belum tahu bagaimana cara-nya mencetak laporan tanpa mengeluarkan print dialog di Jasper Report, mungkin tulisan ini bisa sedikit membantu teman-teman yang sedang kebingungan
. Ok sebelum mulai latihannya, ada beberapa perlengkapan yang harus kita persiapkan dan perlengkapan yang digunakan pada tulisan kali ini yaitu :
1. JDK 1.6_06
2. NetBeans IDE 6.1
3. Jasper Report 3.0.0
4. MySQL 5.0.51a
Pada tulisan kali ini, kita akan mencoba menambahkan fasilitas by pass print dialog ini di aplikasi yang sudah pernah dibuat pada tutorial Membuat Master Detail Report kemarin.
Untuk teman-teman yang belum tahu bagaimana cara membuat report, silahkan baca dahulu tutorial kemarin. Dan untuk teman-teman yang sudah tahu, sekarang download-lah NetBeans Project dari tutorial kemarin disini. Setelah proses download selesai, sekarang ekstrak dan bukalah dari NetBeans IDE
Karena library jasper report tidak ikut di sertakan pada tutorial kemarin, maka ketika teman-teman membuka NetBeans Project dari tutorial kemarin akan mengeluarkan pesan error seperti gambar dibawah ini :

Dialog Error Reference Problem
Agar tidak terdapat masalah pada proses penambahan library yang akan teman-teman lakukan, sekarang editlah dahulu file project.properties yang terdapat pada direktori NamaProject/nbproject/project.properties. Carilah baris seperti dibawah ini :
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | excludes=
file.reference.commons-beanutils-1.7.jar=library/commons-beanutils-1.7.jar
file.reference.commons-collections-2.1.jar=library/commons-collections-2.1.jar
file.reference.commons-digester-1.7.jar=library/commons-digester-1.7.jar
file.reference.commons-javaflow-20060411.jar=library/commons-javaflow-20060411.jar
file.reference.commons-logging-1.0.2.jar=library/commons-logging-1.0.2.jar
file.reference.jasperreports-2.0.2.jar=library/jasperreports-2.0.2.jar
file.reference.jdt-compiler-3.1.1.jar=library/jdt-compiler-3.1.1.jar
file.reference.jfreechart-1.0.0.jar=library/jfreechart-1.0.0.jar
includes=**
jar.compress=false
javac.classpath=\
${libs.MySQLDriver.classpath}:\
${file.reference.commons-beanutils-1.7.jar}:\
${file.reference.commons-collections-2.1.jar}:\
${file.reference.commons-digester-1.7.jar}:\
${file.reference.commons-javaflow-20060411.jar}:\
${file.reference.jasperreports-2.0.2.jar}:\
${file.reference.jdt-compiler-3.1.1.jar}:\
${file.reference.commons-logging-1.0.2.jar}:\
${file.reference.jfreechart-1.0.0.jar}
# Space-separated list of extra javac options
javac.compilerargs= |
Kemudian hapuslah seluruh reference ke library yang lama hingga menjadi seperti dibawah ini :
18 19 20 21 22 23 24 | excludes=
includes=**
jar.compress=false
javac.classpath=\
${libs.MySQLDriver.classpath}:\
# Space-separated list of extra javac options
javac.compilerargs= |
Setelah melakukan penyimpanan pada file project.properties, sekarang tambahkanlah library-library yang diperlukan dengan cara klik kanan node Library di Project Inspector kemudian pilih Add JAR/Folder seperti gambar dibawah ini:

Menambahkan library jasper report ke dalam NetBeans IDE
Klo sudah, sekarang bukalah file FormReport kemudian tambahkanlah event pada button Print dengan cara klik kanan pada button Print kemudian pilih Events > Action > actionPerformed[jButton3ActionPerformed] seperti gambar dibawah ini :

Menambahkan event pada button print
Sekarang gantilah baris dibawah ini :
138 139 140 141 | private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: JOptionPane.showMessageDialog(null, "Maaf fasilitas ini belum aktif !!"); } |
menjadi seperti ini :
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 | private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); Properties systemProp = System.getProperties(); // Ambil current dir String currentDir = systemProp.getProperty("user.dir"); File dir = new File(currentDir); String reportName = "RptMaster.jrxml"; String reportDirName = "Report"; File fileRpt; String fullPath = ""; if (dir.isDirectory()) { String[] isiDir = dir.list(); for (int i = 0; i < isiDir.length; i++) { fileRpt = new File(currentDir + File.separatorChar + isiDir[i] + File.separatorChar + reportDirName + File.separatorChar + reportName); if (fileRpt.isFile()) { // Cek apakah file RptMaster.jrxml ada fullPath = fileRpt.toString(); System.out.println("Found Report File at : " + fullPath); } // end if } // end for i } // end if // Ambil Direktori tempat file RptMaster.jrxml berada String[] subRptDir = fullPath.split(reportName); String reportDir = subRptDir[0]; System.out.println("Report Directory at : " + reportDir); // Ambil Kode Kategori final String paramKdKategori = jComboBox1.getSelectedItem().toString(); Connection con = null; try { String jdbcDriver = "com.mysql.jdbc.Driver"; Class.forName(jdbcDriver); String url = "jdbc:mysql://localhost/rptmasterdetail"; String user = "root"; String pass = "rahasia"; con = (Connection) DriverManager.getConnection(url, user, pass); Statement stm = (Statement) con.createStatement(); // Persiapkan parameter untuk Report Map<string, Object> parameters = new HashMap<string, Object>(); parameters.put("PRM_KD_KATEGORI", paramKdKategori); parameters.put("SUBREPORT_DIR", reportDir); try { JasperReport JRpt = JasperCompileManager.compileReport(fullPath); JasperPrint JPrint = JasperFillManager.fillReport(JRpt, parameters, con); // JasperViewer.viewReport(JPrint, false); JasperPrintManager.printPage(JPrint, 0, false); } catch (Exception rptexcpt) { System.out.println("Report Can't view because : " + rptexcpt); } } catch (Exception e) { System.out.println(e); } this.setCursor(Cursor.getDefaultCursor()); } |
Note :
Setelah melakukan proses penyimpanan sekarang coba jalankanlah dengan menekan tombol F6 kemudian tekanlah tombol Print, dan jika tidak ada pesan kesalahan maka pada output Window akan menampilkan pesan seperti dibawah ini dan printer akan otomatis mencetak laporan kita tanpa mengeluarkan Print Dialog lagi
:
Found Report File at : /home/martin/Desktop/RptMasterDetail/dist/Report/RptMaster.jrxml Found Report File at : /home/martin/Desktop/RptMasterDetail/build/Report/RptMaster.jrxml Report Directory at : /home/martin/Desktop/RptMasterDetail/build/Report/
Happy NetBeaning All
Tags: jasper report


@pandotic: Coba baca2x tulisan saya yg disini mas[1]
[1] http://martinusadyh.web.id/2009/07/11/membuat-master-detail-report-menggunakan-jrbeanscollections-datasource/
mas, saya sudah coba tutorial jasper mas, tapi pas saya coba run .jar-nya langsung keluar error :java.io.FileNotFoundException
tapi kalo saya run dari netbeansnya jalan, mohon pencerahannya mas?… terima kasih.. ditunggu secepatnya yah mas hehehhe …
@Achmatim: Hm.. coba di cek lagi di print mode-nya pak, atau coba di cek di konfigurasi printer-nya (Setting printer properties-nya)
mas martinus, salam kenal. terima kasih sudah berbagi mengenai java, terutama reportingnya. sangat membantu saya dalam belajar.
ohya, saya mau tanya hal yang sama dengan pertanyaan mas sugiharto di atas, yaitu mengenai printing dgn ukuran halaman lebar 21 cm dan tinggi 10 cm, saat diprint ke printer selalu landscape. apakah sudah ada solusi / referensi? saya kesulitan hal tsb. mohon bantuannya, terima kasih.
woh ternyata pak martinus sudah buat tutorialnya ya yg print by pass, ternyata lewat method printPage() ya..
hehe
@Fny: Di linux-nya udah di setting default printernya atau belum ? Klo blm, coba di tambahkan dulu printer-nya (dijadikan sebagai default printer). Nah gmn cara tambahin default printer di Linux, mungkin bisa coba buka firefox trs ketik alamat localhost:631 dan tambahkan dari situ
Silahkan dicoba dulu menambahkan printer di linux-nya, klo udah ditambahkan. Coba jalankan lagi aplikasi-nya. harusnya setelah melakukan langkah diatas, print dialog mau tampil