title: How to execute cmd commands via Java swing
body: <p>I have a file to print and I want to send him a custom water mark via java swing.
  i have 2 files NewJFrame.java and Test.java</p>
  
  <pre><code>package test;
  
  import java.io.IOException;
  import java.io.OutputStream;
  
  /**
   *
   * @author shaharnakash
   */
  public class NewJFrame extends javax.swing.JFrame {
  
      /**
       * Creates new form NewJFrame
       */
      public NewJFrame() {
          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")
      // &lt;editor-fold defaultstate="collapsed" desc="Generated Code"&gt;                          
      private void initComponents() {
  
          jLabel1 = new javax.swing.JLabel();
          jTextField1 = new javax.swing.JTextField();
          jButton1 = new javax.swing.JButton();
  
          setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  
          jLabel1.setText("whater mark name");
  
          jTextField1.addActionListener(new java.awt.event.ActionListener() {
              public void actionPerformed(java.awt.event.ActionEvent evt) {
                  jTextField1ActionPerformed(evt);
              }
          });
  
          jButton1.setText("submit");
          jButton1.addActionListener(new java.awt.event.ActionListener() {
              public void actionPerformed(java.awt.event.ActionEvent evt) {
                  jButton1ActionPerformed(evt);
              }
          });
  
          org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
          getContentPane().setLayout(layout);
          layout.setHorizontalGroup(
              layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
              .add(layout.createSequentialGroup()
                  .add(30, 30, 30)
                  .add(jLabel1)
                  .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                  .add(jTextField1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 251, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                  .addContainerGap())
              .add(layout.createSequentialGroup()
                  .add(17, 17, 17)
                  .add(jButton1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 206, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                  .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
          );
          layout.setVerticalGroup(
              layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
              .add(layout.createSequentialGroup()
                  .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                      .add(layout.createSequentialGroup()
                          .add(41, 41, 41)
                          .add(jLabel1))
                      .add(layout.createSequentialGroup()
                          .addContainerGap()
                          .add(jTextField1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 57, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))
                  .add(112, 112, 112)
                  .add(jButton1)
                  .addContainerGap(96, Short.MAX_VALUE))
          );
  
          pack();
      }// &lt;/editor-fold&gt;                        
  
      private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
          // TODO add your handling code here:
      }                                           
  
      private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
          String value;
          value = jTextField1.getText();
           try{
              String command = "cmd /c start cmd.exe";
              Process child = Runtime.getRuntime().exec(command);
  
              OutputStream out = child.getOutputStream();
              out.write("C:/PDF&gt;pdfprint.exe -printer 'docPrint' -firstpage 1 -lastpage 1 -wtext 'value' -wo 100 -wa 50 -wf 'Arial' C:/readme.pdf".getBytes());
                  out.close();
          }catch(IOException e){
  
          }
      }                                        
  
      /**
       * @param args the command line arguments
       */
      public static void main(String args[]) {
          /* Set the Nimbus look and feel */
          //&lt;editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "&gt;
          /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
           * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
           */
          try {
              for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                  if ("Nimbus".equals(info.getName())) {
                      javax.swing.UIManager.setLookAndFeel(info.getClassName());
                      break;
                  }
              }
          } catch (ClassNotFoundException ex) {
              java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
          } catch (InstantiationException ex) {
              java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
          } catch (IllegalAccessException ex) {
              java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
          } catch (javax.swing.UnsupportedLookAndFeelException ex) {
              java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
          }
          //&lt;/editor-fold&gt;
  
          /* Create and display the form */
          java.awt.EventQueue.invokeLater(new Runnable() {
              public void run() {
                  new NewJFrame().setVisible(true);
              }
          });
      }
      // Variables declaration - do not modify                     
      private javax.swing.JButton jButton1;
      private javax.swing.JLabel jLabel1;
      private javax.swing.JTextField jTextField1;
      // End of variables declaration                   
  }
  </code></pre>
  
  <p>and the main java class Test.java that execute the program </p>
  
  <pre><code>    package test;
  
  /**
   *
   * @author shaharnakash
   */
  public class Test {
  
      /**
       * @param args the command line arguments
       */
      public static void main(String[] args) {
          // TODO code application logic here
           java.awt.EventQueue.invokeLater(new Runnable() {
              public void run() {
                  new NewJFrame().setVisible(true);
              }
          });
      }
  }
  </code></pre>
  
  <p>the idea is to insert a value to the text field and after that click on the submit button it will execute the cmd command </p>
  
  <pre><code>C:/PDF&gt;pdfprint.exe -printer 'docPrint' -firstpage 1 -lastpage 1 -wtext 'value' -wo 100 -wa 50 -wf 'Arial' C:/readme.pdf
  </code></pre>
  
  <p>when i execute the program it will open the cmd and will not send the file to the printer</p>
  
  <p>note: draft is the water mark change</p>
  
  <p>i change to                             Process child = Runtime.getRuntime().exec("\"PDF\pdfprint.exe -printer docPrint -firstpage 1 -lastpage 1 -wtext "+value+" -wo 100 -wa 50 -wf Arial C:\readme.pdf");</p>
  
  <p>and i still not working</p>