2013-01-17 3 views
1

저는 업계 용 인보이스 생성/지폐 인쇄 시스템을 연구 중입니다.자바에서 텍스트와 이미지를 모두 인쇄하는 방법 "초보자를위한 간단한 코드 공유"

회사의 이미지 로고뿐만 아니라 텍스트를 인쇄하는 코드가 필요합니다.

내가 만든 JFrame 코드를 제공하고 있으며 SQL 2008 서버의 데이터를 백엔드로 가져 와서 텍스트와 이미지를 모두 인쇄하는 인쇄 코드가 필요합니다.

here its is a code of netbeans frame 
here i need action implementation on Print Button below: 

plz help me soon providing a appropriate way to print text and image. 


package invoice2; 

import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.HeadlessException; 
import java.awt.image.BufferedImage; 
import java.sql.PreparedStatement; 
import java.sql.SQLException; 
import javax.swing.JOptionPane; 
import java.awt.print.*; 
import java.awt.print.PageFormat; 
import javax.swing.JTextPane; 
import java.awt.print.PrinterException; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.imageio.ImageIO; 
import javax.print.Doc; 
import javax.print.DocFlavor; 
import javax.print.DocPrintJob; 
import javax.print.PrintService; 
import javax.print.PrintServiceLookup; 
import javax.print.SimpleDoc; 
import javax.print.attribute.HashPrintRequestAttributeSet; 
import javax.print.attribute.PrintRequestAttributeSet; 
import javax.print.attribute.standard.Copies; 
import javax.print.attribute.standard.Sides; 
import javax.swing.Icon; 
import javax.swing.ImageIcon; 
import javax.swing.JFileChooser; 
import javax.swing.SwingUtilities; 
import javax.swing.filechooser.FileNameExtensionFilter; 



/** 
* 
* @author Admin Param 
*/ 
public class generate extends javax.swing.JInternalFrame { 

    /** 
    * Creates new form generate 
    */ 
    public generate() { 
     initComponents(); 
    } 

    /** 
    * This method is called from within the constructor to initialize the form. 
    * WARNING: Do NOT modify this code. The content of this method is always 
    * regenerated by the Form Editor. 
    */ 
    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code"> 
    private void initComponents() { 

     jPanel1 = new javax.swing.JPanel(); 
     jSeparator1 = new javax.swing.JSeparator(); 
     jLabel1 = new javax.swing.JLabel(); 
     jLabel2 = new javax.swing.JLabel(); 
     jLabel3 = new javax.swing.JLabel(); 
     jLabel4 = new javax.swing.JLabel(); 
     jLabel5 = new javax.swing.JLabel(); 
     jLabel6 = new javax.swing.JLabel(); 
     jLabel8 = new javax.swing.JLabel(); 
     jLabel9 = new javax.swing.JLabel(); 
     t7 = new javax.swing.JTextField(); 
     t1 = new javax.swing.JTextField(); 
     t2 = new javax.swing.JTextField(); 
     t3 = new javax.swing.JTextField(); 
     t5 = new javax.swing.JTextField(); 
     t6 = new javax.swing.JTextField(); 
     t4 = new javax.swing.JScrollPane(); 
     t9 = new javax.swing.JTextArea(); 
     jButton1 = new javax.swing.JButton(); 
     d1 = new com.toedter.calendar.JDateChooser(); 
     jButton4 = new javax.swing.JButton(); 
     jButton5 = new javax.swing.JButton(); 
     logo = new javax.swing.JLabel(); 
     jLabel7 = new javax.swing.JLabel(); 
     jButton2 = new javax.swing.JButton(); 
     jButton3 = new javax.swing.JButton(); 
     print = new javax.swing.JButton(); 
     jSeparator2 = new javax.swing.JSeparator(); 
     jLabel10 = new javax.swing.JLabel(); 

     setClosable(true); 
     setIconifiable(true); 
     setMaximizable(true); 
     setResizable(true); 
     setTitle("Generate Bill/Print Invoice"); 
     setToolTipText(""); 
     getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); 

     jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); 
     jPanel1.add(jSeparator1, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, -18, 490, 20)); 

     jLabel1.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N 
     jLabel1.setText("No. Of Item :"); 
     jPanel1.add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(35, 20, 90, -1)); 

     jLabel2.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N 
     jLabel2.setText("Price of Item :"); 
     jPanel1.add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(35, 60, 90, -1)); 

     jLabel3.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N 
     jLabel3.setText(" Tex :"); 
     jPanel1.add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 280, -1, 30)); 

     jLabel4.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N 
     jLabel4.setText("Invoice No :"); 
     jPanel1.add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(41, 90, 80, 21)); 

     jLabel5.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N 
     jLabel5.setText(" Billing Address :"); 
     jPanel1.add(jLabel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(40, 130, -1, 21)); 

     jLabel6.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N 
     jLabel6.setText(" Sub Total :"); 
     jPanel1.add(jLabel6, new org.netbeans.lib.awtextra.AbsoluteConstraints(60, 240, 80, 30)); 

     jLabel8.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N 
     jLabel8.setText(" Total :"); 
     jPanel1.add(jLabel8, new org.netbeans.lib.awtextra.AbsoluteConstraints(90, 330, -1, -1)); 

     jLabel9.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N 
     jLabel9.setText(" Date :"); 
     jPanel1.add(jLabel9, new org.netbeans.lib.awtextra.AbsoluteConstraints(80, 210, -1, -1)); 

     t7.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       t7ActionPerformed(evt); 
      } 
     }); 
     jPanel1.add(t7, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 320, 140, 30)); 

     t1.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       t1ActionPerformed(evt); 
      } 
     }); 
     jPanel1.add(t1, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 10, 140, 30)); 

     t2.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       t2ActionPerformed(evt); 
      } 
     }); 
     jPanel1.add(t2, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 50, 140, 30)); 

     t3.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       t3ActionPerformed(evt); 
      } 
     }); 
     jPanel1.add(t3, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 90, 140, 30)); 

     t5.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       t5ActionPerformed(evt); 
      } 
     }); 
     jPanel1.add(t5, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 240, 140, 30)); 

     t6.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       t6ActionPerformed(evt); 
      } 
     }); 
     jPanel1.add(t6, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 280, 140, 30)); 

     t9.setColumns(20); 
     t9.setRows(5); 
     t4.setViewportView(t9); 

     jPanel1.add(t4, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 130, 180, 60)); 

     jButton1.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N 
     jButton1.setText("Generate Total"); 
     jButton1.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton1ActionPerformed(evt); 
      } 
     }); 
     jPanel1.add(jButton1, new org.netbeans.lib.awtextra.AbsoluteConstraints(350, 310, 150, 40)); 
     jPanel1.add(d1, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 200, 160, 30)); 

     jButton4.setFont(new java.awt.Font("Times New Roman", 0, 14)); // NOI18N 
     jButton4.setText("Generate SubTotal"); 
     jButton4.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton4ActionPerformed(evt); 
      } 
     }); 
     jPanel1.add(jButton4, new org.netbeans.lib.awtextra.AbsoluteConstraints(350, 230, 150, 40)); 

     jButton5.setText("image "); 
     jButton5.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton5ActionPerformed(evt); 
      } 
     }); 
     jPanel1.add(jButton5, new org.netbeans.lib.awtextra.AbsoluteConstraints(370, 10, 100, 40)); 

     logo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/invoice2/big.jpg"))); // NOI18N 
     jPanel1.add(logo, new org.netbeans.lib.awtextra.AbsoluteConstraints(370, 70, 130, 130)); 

     getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 30, 510, 360)); 

     jLabel7.setText(" Tex :"); 
     getContentPane().add(jLabel7, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 180, -1, 21)); 

     jButton2.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N 
     jButton2.setText("Exit"); 
     jButton2.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton2ActionPerformed(evt); 
      } 
     }); 
     getContentPane().add(jButton2, new org.netbeans.lib.awtextra.AbsoluteConstraints(390, 410, 120, 40)); 

     jButton3.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N 
     jButton3.setText("Save "); 
     jButton3.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton3ActionPerformed(evt); 
      } 
     }); 
     getContentPane().add(jButton3, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 410, 120, 40)); 

     print.setFont(new java.awt.Font("Times New Roman", 1, 18)); // NOI18N 
     print.setText("Print "); 
     print.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       printActionPerformed(evt); 
      } 
     }); 
     getContentPane().add(print, new org.netbeans.lib.awtextra.AbsoluteConstraints(200, 410, 130, 40)); 
     getContentPane().add(jSeparator2, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 18, 480, 10)); 

     jLabel10.setFont(new java.awt.Font("Times New Roman", 0, 18)); // NOI18N 
     jLabel10.setText(" Welcome To Invoice Print/Bill Generator Software By ArtSheoran"); 
     getContentPane().add(jLabel10, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 0, 510, 20)); 

     pack(); 
    }// </editor-fold> 

    private void t7ActionPerformed(java.awt.event.ActionEvent evt) {         
     // TODO add your handling code here: 
    }         

    private void t1ActionPerformed(java.awt.event.ActionEvent evt) {         
     // TODO add your handling code here: 
    }         

    private void t2ActionPerformed(java.awt.event.ActionEvent evt) {         
     // TODO add your handling code here: 
    }         

    private void t3ActionPerformed(java.awt.event.ActionEvent evt) {         
     // TODO add your handling code here: 
    }         

    private void t5ActionPerformed(java.awt.event.ActionEvent evt) {         
     // TODO add your handling code here: 
    }         

    private void t6ActionPerformed(java.awt.event.ActionEvent evt) {         
     // TODO add your handling code here: 
    }         

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {           
dispose();  // TODO add your handling code here: 
    }           

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
     // TODO add your handling code here: 
    }           

    @SuppressWarnings("empty-statement") 
    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {           
    try 
    { 
     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
     String connectionUrl = "jdbc:sqlserver://localhost:1433;databaseName=invoice;integratedSecurity=true"; 
     Connection con = DriverManager.getConnection(connectionUrl); 
     PreparedStatement pstmt=con.prepareStatement("insert into record values(?,?,?,?,?,?,?,?)"); 

     int f1=Integer.parseInt(t1.getText()); 
     pstmt.setInt(1,f1); 

     int f2=Integer.parseInt(t2.getText()); 
     pstmt.setInt(2,f2); 

     int f3=Integer.parseInt(t3.getText()); 
     pstmt.setInt(3,f3); 

     pstmt.setString(4,t9.getText()); 

     java.util.Date date=d1.getDate(); 
     String d=String.format("%1$tm-%1$td-%1$ty",date); 
     pstmt.setString(5,d); 

     int f4=Integer.parseInt(t5.getText()); 
     pstmt.setInt(6,f4); 

     int f5=Integer.parseInt(t6.getText()); 
     pstmt.setInt(7,f5); 

     int f6=Integer.parseInt(t7.getText()); 
     pstmt.setInt(8,f6); 
     pstmt.executeUpdate(); 
     JOptionPane.showMessageDialog(null,"record saved successfully"); 
    } 
    catch(ClassNotFoundException | SQLException | NumberFormatException | HeadlessException ob) 
    { 
     JOptionPane.showMessageDialog(null, ob.toString()); 
    }  // TODO add your handling code here: 
    }           

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {           

     int nitem=Integer.parseInt(t1.getText()); 
     int price=Integer.parseInt(t2.getText()); 
     int s=nitem*price; 
     t5.setText(Integer.toString(s));// TODO add your handling code here: 
    }           

    private void printActionPerformed(java.awt.event.ActionEvent evt) {           


// here need a action under print button for text and image printing. 


    }           

    private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) { 

     try { 

     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
     String connectionUrl = "jdbc:sqlserver://localhost:1433;databaseName=invoice;integratedSecurity=true"; 
     Connection con = DriverManager.getConnection(connectionUrl); 
     PreparedStatement pstmt=con.prepareStatement("insert into saveimage values(?,?,?,?)"); 
pstmt.setString(1,"mahendra"); 
       pstmt.setString(2,"Delhi"); 
       pstmt.setString(4,"123456"); 
     JFileChooser chooser = new JFileChooser(); 
     String str=""; 
    FileNameExtensionFilter filter = new FileNameExtensionFilter(
     "JPG & GIF Images", "jpg", "gif"); 
    chooser.setFileFilter(filter); 
    int returnVal = chooser.showOpenDialog(this); 
    if(returnVal == JFileChooser.APPROVE_OPTION) 
    { 
     File ob=chooser.getSelectedFile(); 
     str=ob.getPath(); 
     Icon img = new ImageIcon(str); 
     logo.setIcon(img); 
     pstmt.setString(3, str); 

       //executeUpdate() method execute specified sql query. Here this query 
       //insert data and image from specified address. 
     int s = pstmt.executeUpdate(); 
       if(s>0) { 
         JOptionPane.showMessageDialog(null, "File Uploaded Sucessfully");; 
       } 
       else { 
        JOptionPane.showMessageDialog(null, "File Not uploaded a error has been occured"); 
       } 
      } 
} 
      catch (ClassNotFoundException | SQLException | HeadlessException ex) { 
        System.out.println("Found some error : "+ex); 
      }  // TODO add your handling code here: 
    } 


    // Variables declaration - do not modify 
    private com.toedter.calendar.JDateChooser d1; 
    private javax.swing.JButton jButton1; 
    private javax.swing.JButton jButton2; 
    private javax.swing.JButton jButton3; 
    private javax.swing.JButton jButton4; 
    private javax.swing.JButton jButton5; 
    private javax.swing.JLabel jLabel1; 
    private javax.swing.JLabel jLabel10; 
    private javax.swing.JLabel jLabel2; 
    private javax.swing.JLabel jLabel3; 
    private javax.swing.JLabel jLabel4; 
    private javax.swing.JLabel jLabel5; 
    private javax.swing.JLabel jLabel6; 
    private javax.swing.JLabel jLabel7; 
    private javax.swing.JLabel jLabel8; 
    private javax.swing.JLabel jLabel9; 
    private javax.swing.JPanel jPanel1; 
    private javax.swing.JSeparator jSeparator1; 
    private javax.swing.JSeparator jSeparator2; 
    private javax.swing.JLabel logo; 
    private javax.swing.JButton print; 
    private javax.swing.JTextField t1; 
    private javax.swing.JTextField t2; 
    private javax.swing.JTextField t3; 
    private javax.swing.JScrollPane t4; 
    private javax.swing.JTextField t5; 
    private javax.swing.JTextField t6; 
    private javax.swing.JTextField t7; 
    private javax.swing.JTextArea t9; 
    // End of variables declaration 

    private static class OutputPrinter implements Printable { 

     public OutputPrinter(String printData) { 
     } 

     @Override 
     public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException { 
      throw new UnsupportedOperationException("Not supported yet."); 
     } 
    } 
} 


Plz help me soon and write appropriate guide.to implement action of printing text and image from a JInternal Frame and using SQL Server 2008. 
a good answer is awaited. 
+0

당신은 [재스퍼 리포트] (http://www.jaspersoft.com/reporting)를 살펴보고 자신에게 번거 로움 – MadProgrammer

답변

4

HTML을 정의하고 JTextPane으로 설정할 수 있습니다. 그런 다음 JTextPane의 내용을 인쇄하십시오.

당신은 다중 페이지 인쇄 http://java-sl.com/JEditorPanePrinter.html

+0

죄송 친애하는 당신의 코드를 많이 절약 할 수 있습니다 참조해야하는 경우 또한 몇 가지 예외가 거기에 잘게 작동하지 않습니다. plz 좀 더 기본적인 또는 간단한 코드를 공유 할 수 있습니다.이 코드는 실제적으로 어떤 매개 변수가 당신의 제안에 대한 printing.thanx 전달 된 지 않습니다. – paramsheoran

관련 문제