我建议你用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 [自解压]
================================================================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 [自解压]
我現在目的想做成自定義﹐能夠讓user自己選擇欄位﹐自己改變其寬度等功能。
不知道crystal report的插件﹐可否用來做。
它是否兼容Jdbc的Resultset.以及是否能夠調它其中的屬性等方面
—————————————————————————————————
____()()
/ @@
`~~~~~\_;m__m._>o -------大米在哪里?大米在哪里??
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;}