如何实现数据的批量打印

jlgdzhao 2003-06-03 05:20:20
各位老大:
应用JSP在网页中如何控制数据的批量打印,比如说学生成绩单的连续打印,谢谢了。
...全文
273 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xqi8 2003-06-05
  • 打赏
  • 举报
回复
up
jlgdzhao 2003-06-05
  • 打赏
  • 举报
回复
用javaScript如何操作,我想尽可能在web页内及jsp程序段中解决最好,我很菜,谢谢指点。
WebEtCell 2003-06-04
  • 打赏
  • 举报
回复
http://www.etcell.com/
jlgdzhao 2003-06-04
  • 打赏
  • 举报
回复
兄弟,能不能说的详尽一点,最好有程序段,谢谢了。
WAPQQ 2003-06-04
  • 打赏
  • 举报
回复
1:使用Itext,FOI在样转换成PDF,POI转换成电子表格
2:利用javaScript操作电子表格
zyymmm 2003-06-04
  • 打赏
  • 举报
回复
请看:
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.util.*;
import java.awt.print.*;

import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;

public class PrintPreview
extends JFrame
{
protected int m_wPage;
protected int m_hPage;
protected int m_orientation;
protected Printable m_target;
protected JComboBox m_cbScale;
protected PreviewContainer m_preview;

public PrintPreview(Printable target)
{
this(target, "Print Preview", PageFormat.PORTRAIT);
}

public PrintPreview(Printable target, String title, int orientation)
{
super(title);
setSize(600, 400);
getContentPane().setLayout(new BorderLayout());
m_target = target;
m_orientation = orientation;

JToolBar tb = new JToolBar();
JButton bt = new JButton("Print", new ImageIcon("print.gif"));
ActionListener lst = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
PrinterJob prnJob = PrinterJob.getPrinterJob();
PageFormat pageFormat = prnJob.defaultPage();
pageFormat.setOrientation(m_orientation);
prnJob.setPrintable(m_target, pageFormat);

if (!prnJob.printDialog())
return;
setCursor( Cursor.getPredefinedCursor(
Cursor.WAIT_CURSOR));
prnJob.print();
setCursor( Cursor.getPredefinedCursor(
Cursor.DEFAULT_CURSOR));
dispose();
}
catch (PrinterException ex)
{
ex.printStackTrace();
System.err.println("Printing error: "+ex.toString());
}
}
};
bt.addActionListener(lst);
bt.setAlignmentY(0.5f);
bt.setMargin(new Insets(4,6,4,6));
tb.add(bt);

bt = new JButton("Close");
lst = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
dispose();
}
};
bt.addActionListener(lst);
bt.setAlignmentY(0.5f);
bt.setMargin(new Insets(2,6,2,6));
tb.add(bt);

String[] scales = { "10 %", "25 %", "50 %", "100 %" };
m_cbScale = new JComboBox(scales);
lst = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Thread runner = new Thread() {
public void run() {
String str = m_cbScale.getSelectedItem().
toString();
if (str.endsWith("%"))
str = str.substring(0, str.length()-1);
str = str.trim();
int scale = 0;
try { scale = Integer.parseInt(str); }
catch (NumberFormatException ex) { return; }
int w = (int)(m_wPage*scale/100);
int h = (int)(m_hPage*scale/100);

Component[] comps = m_preview.getComponents();
for (int k=0; k<comps.length; k++)
{
if (!(comps[k] instanceof PagePreview))
continue;
PagePreview pp = (PagePreview)comps[k];
pp.setScaledSize(w, h);
}
m_preview.doLayout();
m_preview.getParent().getParent().validate();
}
};
runner.start();
}
};
m_cbScale.addActionListener(lst);
m_cbScale.setMaximumSize(m_cbScale.getPreferredSize());
m_cbScale.setEditable(true);
tb.addSeparator();
tb.add(m_cbScale);
getContentPane().add(tb, BorderLayout.NORTH);

m_preview = new PreviewContainer();

PrinterJob prnJob = PrinterJob.getPrinterJob();
PageFormat pageFormat = prnJob.defaultPage();
pageFormat.setOrientation(m_orientation);

if (pageFormat.getHeight()==0 || pageFormat.getWidth()==0)
{
System.err.println("Unable to determine default page size");
return;
}
m_wPage = (int)(pageFormat.getWidth());
m_hPage = (int)(pageFormat.getHeight());
int scale = 10;
int w = (int)(m_wPage*scale/100);
int h = (int)(m_hPage*scale/100);

int pageIndex = 0;
try
{
while (true)
{

BufferedImage img = new BufferedImage(m_wPage,
m_hPage, BufferedImage.TYPE_INT_RGB);
Graphics g = img.getGraphics();
g.setColor(Color.white);
g.fillRect(0, 0, m_wPage, m_hPage);
if (target.print(g, pageFormat, pageIndex) !=
Printable.PAGE_EXISTS)
break;

PagePreview pp = new PagePreview(w, h, img);
m_preview.add(pp);
pageIndex++;
}
}
catch (PrinterException e)
{
e.printStackTrace();
System.err.println("Printing error: "+e.toString());
}

JScrollPane ps = new JScrollPane(m_preview);
getContentPane().add(ps, BorderLayout.CENTER);

setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setVisible(true);
}

class PreviewContainer
extends JPanel
{
protected int H_GAP = 16;
protected int V_GAP = 10;

public Dimension getPreferredSize()
{
int n = getComponentCount();
if (n == 0)
return new Dimension(H_GAP, V_GAP);
Component comp = getComponent(0);
Dimension dc = comp.getPreferredSize();
int w = dc.width;
int h = dc.height;

Dimension dp = getParent().getSize();
int nCol = Math.max((dp.width-H_GAP)/(w+H_GAP), 1);
int nRow = n/nCol;
if (nRow*nCol < n)
nRow++;

int ww = nCol*(w+H_GAP) + H_GAP;
int hh = nRow*(h+V_GAP) + V_GAP;
Insets ins = getInsets();
return new Dimension(ww+ins.left+ins.right,
hh+ins.top+ins.bottom);
}

public Dimension getMaximumSize()
{
return getPreferredSize();
}

public Dimension getMinimumSize()
{
return getPreferredSize();
}

public void doLayout()
{
Insets ins = getInsets();
int x = ins.left + H_GAP;
int y = ins.top + V_GAP;

int n = getComponentCount();
if (n == 0)
return;
Component comp = getComponent(0);
Dimension dc = comp.getPreferredSize();
int w = dc.width;
int h = dc.height;

Dimension dp = getParent().getSize();
int nCol = Math.max((dp.width-H_GAP)/(w+H_GAP), 1);
int nRow = n/nCol;
if (nRow*nCol < n)
nRow++;

int index = 0;
for (int k = 0; k<nRow; k++)
{
for (int m = 0; m<nCol; m++)
{
if (index >= n)
return;
comp = getComponent(index++);
comp.setBounds(x, y, w, h);
x += w+H_GAP;
}
y += h+V_GAP;
x = ins.left + H_GAP;
}
}
}

class PagePreview
extends JPanel
{
protected int m_w;
protected int m_h;
protected Image m_source;
protected Image m_img;

public PagePreview(int w, int h, Image source)
{
m_w = w;
m_h = h;
m_source= source;
m_img = m_source.getScaledInstance(m_w, m_h,
Image.SCALE_SMOOTH);
m_img.flush();
setBackground(Color.white);
setBorder(new MatteBorder(1, 1, 2, 2, Color.black));
}

public void setScaledSize(int w, int h)
{
m_w = w;
m_h = h;
m_img = m_source.getScaledInstance(m_w, m_h,
Image.SCALE_SMOOTH);
repaint();
}

public Dimension getPreferredSize()
{
Insets ins = getInsets();
return new Dimension(m_w+ins.left+ins.right,
m_h+ins.top+ins.bottom);
}

public Dimension getMaximumSize()
{
return getPreferredSize();
}

public Dimension getMinimumSize()
{
return getPreferredSize();
}

public void paint(Graphics g)
{
g.setColor(getBackground());
g.fillRect(0, 0, getWidth(), getHeight());
g.drawImage(m_img, 0, 0, this);
paintBorder(g);
}
}
}
beloved 2003-06-04
  • 打赏
  • 举报
回复
恩,这个我的想法是你自己用层来控制好输出的位置就没有问题。
jlgdzhao 2003-06-04
  • 打赏
  • 举报
回复
http://www.etcell.com/的链接是乱码。求救啊!!!!
dkmilk 2003-06-03
  • 打赏
  • 举报
回复
嘿。。这个问题


用javascript
的web控件控制打印。
有一个参数一定要注意。(6,2)

不让他出现打制提示栏,直接打印,打印后就转到下一页打印。,思路就是这样
☆☆ 资源说明:☆☆ ☆ 系统功能:☆ 由于操作人员的计算机知识有限,因此要求系统具有良好的人机界面; 如果系统使用的对象较多,则要求有较好的权限管理; 方便的数据查询,支持多条件查询; 批量填写进货单及销售单; 与代理商和供应商往来账本明细,绝不存在假账、漏账、差账等情况; 图表分析月销售状况; 当外界环境(停电、网络病毒)干扰本系统时,系统可以自动保护原始数据的安全; 在相应的权限下,删除数据方便简单、数据稳定性强; 数据计算自动完成,尽量减少人工干预; 强大的报表打印功能; ☆ 系统特色:☆ 灵活运用表格进行批量录入数据,使信息的传递更加快捷; 采用人机对话方式,界面美观友好,信息查询灵活、方便,数据存储安全可靠; 与供应商和代理商账目清晰; 实施强大的后台监控功能; 功能强大的月营业额分析; 实现各种查询(如定位查询、模糊查询等); 实现商品进货分析与统计、销售分析与统计、商品销售成本明细等功能; 强大的库存预警功能,尽可能地减少商家不必要的损失; 实现灵活的打印功能(如单页、多页和复杂打印等); 系统对用户输入的数据进行严格的数据检验,尽可能排除人为的错误; 系统最大限度地实现了易安装性、易维护性和易操作性;

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧