小弟刚接触JAVA打印机打印TXT,困惑许久,求一段实例代码,要求中文不乱码。意思就是把TXT以文件形式放入Windows打印队列。

解决方案 »

  1.   

    Java的打印API主要存在于java.awt.print包中。而jdk1.4新增的类则主要存在于javax.print包及其相应的子包javax.print.event和javax.print.attribute中。其中javax.print包中主要包含打印服务的相关类,而javax.print.event则包含打印事件的相关定义,javax.print.attribute则包括打印服务的可用属性列表等。例子:
    http://topic.csdn.net/t/20010830/14/263464.html
      

  2.   


    public void printFile(String fileName){
            StringBuffer buffer = new StringBuffer();
            try {
                BufferedReader reader = new BufferedReader(new FileReader(fileName));
                while(reader.ready()){
                    buffer.append(reader.readLine());
                }
                System.out.println("输出文件内容的结果为:" + buffer.toString());
                reader.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
      

  3.   

    2L链接里面的/** 
      *   @version   1.00   1999-09-11 
      *   @author   Cay   Horstmann 
      */ import   java.awt.*; 
    import   java.awt.event.*; 
    import   java.awt.font.*; 
    import   java.awt.geom.*; 
    import   java.awt.print.*; 
    import   java.util.*; 
    import   javax.swing.*; public   class   PrintTest 
    {     public   static   void   main(String[]   args) 
          {     JFrame   frame   =   new   PrintTestFrame(); 
                frame.show(); 
          } 
    } class   PrintTestFrame   extends   JFrame 
          implements   ActionListener 
    {     public   PrintTestFrame() 
          {     setTitle( "PrintTest "); 
                setSize(300,   300); 
                addWindowListener(new   WindowAdapter() 
                      {     public   void   windowClosing(WindowEvent   e) 
                            {     System.exit(0); 
                            } 
                      }   );             Container   contentPane   =   getContentPane(); 
                canvas   =   new   PrintPanel(); 
                contentPane.add(canvas,   "Center ");             JPanel   buttonPanel   =   new   JPanel(); 
                printButton   =   new   JButton( "Print "); 
                buttonPanel.add(printButton); 
                printButton.addActionListener(this);             pageSetupButton   =   new   JButton( "Page   setup "); 
                buttonPanel.add(pageSetupButton); 
                pageSetupButton.addActionListener(this);             contentPane.add(buttonPanel,   "North "); 
          }       public   void   actionPerformed(ActionEvent   event) 
          {     Object   source   =   event.getSource(); 
                if   (source   ==   printButton) 
                {     PrinterJob   printJob   =   PrinterJob.getPrinterJob(); 
                      if   (pageFormat   ==   null) 
                            pageFormat   =   printJob.defaultPage(); 
                      printJob.setPrintable(canvas,   pageFormat); 
                      if   (printJob.printDialog()) 
                      {     try 
                            {     printJob.print(); 
                            } 
                            catch   (PrinterException   exception) 
                            {     JOptionPane.showMessageDialog(this,   exception); 
                            } 
                      } 
                } 
                else   if   (source   ==   pageSetupButton) 
                {     PrinterJob   printJob   =   PrinterJob.getPrinterJob(); 
                      if   (pageFormat   ==   null) 
                            pageFormat   =   printJob.defaultPage(); 
                      pageFormat   =   printJob.pageDialog(pageFormat); 
                } 
          }       private   JButton   printButton; 
          private   JButton   pageSetupButton;       private   PrintPanel   canvas; 
          private   PageFormat   pageFormat; 
    } class   PrintPanel   extends   JPanel 
          implements   Printable 
    {     public   void   paintComponent(Graphics   g) 
          {     super.paintComponent(g); 
                Graphics2D   g2   =   (Graphics2D)g; 
                drawPage(g2); 
          }       public   int   print(Graphics   g,   PageFormat   pf,   int   page) 
                throws   PrinterException 
          {     if   (page   > =   1)   return   Printable.NO_SUCH_PAGE; 
                Graphics2D   g2   =   (Graphics2D)g; 
                g2.setPaint(Color.black); 
                g2.translate(pf.getImageableX(),   pf.getImageableY()); 
                g2.draw(new   Rectangle2D.Double(0,   0, 
                      pf.getImageableWidth(),   pf.getImageableHeight()));             drawPage(g2); 
                return   Printable.PAGE_EXISTS; 
          }       public   void   drawPage(Graphics2D   g2) 
          {     FontRenderContext   context   =   g2.getFontRenderContext(); 
                Font   f   =   new   Font( "Serif ",   Font.PLAIN,   72); 
                GeneralPath   clipShape   =   new   GeneralPath();             TextLayout   layout   =   new   TextLayout( "Hello ",   f,   context); 
                AffineTransform   transform 
                      =   AffineTransform.getTranslateInstance(0,   72); 
                Shape   outline   =   layout.getOutline(transform); 
                clipShape.append(outline,   false);             layout   =   new   TextLayout( "World ",   f,   context); 
                transform 
                      =   AffineTransform.getTranslateInstance(0,   144); 
                outline   =   layout.getOutline(transform); 
                clipShape.append(outline,   false);             g2.draw(clipShape); 
                g2.clip(clipShape);             final   int   NLINES   =50; 
                Point2D   p   =   new   Point2D.Double(0,   0); 
                for   (int   i   =   0;   i   <   NLINES;   i++) 
                {     double   x   =   (2   *   getWidth()   *   i)   /   NLINES; 
                      double   y   =   (2   *   getHeight()   *   (NLINES   -   1   -   i)) 
                            /   NLINES; 
                      Point2D   q   =   new   Point2D.Double(x,   y); 
                      g2.draw(new   Line2D.Double(p,   q)); 
                } 
          }