我建议你用pdf的东西来做,他的网站上有这方面的资料,我们现在再做的一个软件,打印就用的是pdf格式来处理!
================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
     可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
Http://www.ChinaOK.net/csdn/csdn.exe    [自解压]

解决方案 »

  1.   

    我们是用Formula one,写预览很简单。
      

  2.   

    Formula one 是屬于第三方組件嗎。
    我現在目的想做成自定義﹐能夠讓user自己選擇欄位﹐自己改變其寬度等功能。
    不知道crystal report的插件﹐可否用來做。
    它是否兼容Jdbc的Resultset.以及是否能夠調它其中的屬性等方面
      

  3.   

    我不是高手我不会啊
    —————————————————————————————————
             ____()()
            /      @@
      `~~~~~\_;m__m._>o     -------大米在哪里?大米在哪里??
      

  4.   

    以前的一段代码,不是我写的,不过希望对你有用。import java.awt.*;
    import java.awt.event.*;
    import java.awt.font.*;
    import java.awt.geom.*;
    import java.util.*;
    import javax.swing.*;
    import java.awt.print.*;
    import java.sql.*;
    import edu.Whu.iric.Comp.dbuse; public class PrintPreviewCanvas extends JPanel {  private double scale = 1.0;  public PrintPreviewCanvas(Book b,Dimension d)
        {
         book = b;
         currentPage = 0;
         this.d=d;
         }    public void paintComponent(Graphics g)
        {
         super.paintComponent(g);
         Graphics2D g2 = (Graphics2D)g;
         PageFormat pageFormat = book.getPageFormat(currentPage);     double xoff;
         double yoff;
         double scale;
         double px = pageFormat.getWidth();
         double py = pageFormat.getHeight();
         //double sx = this.getWidth() - 1;
         //double sy = this.getHeight() -1;
         double sx=d.getWidth()-1;
         double sy=d.getHeight()-1;     if(px/py < sx/sy)
         {
          scale = sy/py;
          xoff = 0.5 * (sx - scale * px);
          yoff = 0;
          }
          else
          {
           scale = sx/px;
           xoff = 0;
           yoff = 0.5 * (sy - scale * py);
           }
           System.out.println(String.valueOf(px)+" "+String.valueOf(py)+" "+String.valueOf(sx)+" "+String.valueOf(sy)+" ");
           System.out.println("before scale= " + String.valueOf(scale) + "this.sclae = "+ String.valueOf(this.scale));
           scale = scale * this.scale;
           System.out.println("after  scale= " + String.valueOf(scale) + "this.sclae = "+ String.valueOf(this.scale));
           g2.translate((float)xoff,(float)yoff);
           g2.scale((float)scale,(float)scale);       Rectangle2D page = new Rectangle2D.Double(0,0,px,py);
           g2.setPaint(Color.white);
           g2.fill(page);
           g2.setPaint(Color.black);
           g2.draw(page);       Printable printable =  book.getPrintable(currentPage);
           try
           {
            printable.print(g2,pageFormat,currentPage);
           }
           catch(PrinterException exception)
           {
            g2.draw(new Line2D.Double(0,0,px,py));
            g2.draw(new Line2D.Double(0,px,0,py));
            }
          }
          public void flipPage(int by)
          {
           int newPage = currentPage + by;
           if(0 <= newPage && newPage < book.getNumberOfPages())
            {  currentPage  = newPage;
               repaint();
            }
          }      public void sizeChange(double scale)
          {
               this.scale = scale;
               System.out.println("this.sclae = "+ String.valueOf(this.scale));
               repaint();
               System.out.println("this.sclae = "+ String.valueOf(this.scale));
               }
          private Book book;
          private int currentPage;
          private Dimension d;}