java调用打印机接口

 时间:2026-02-14 09:22:07

1、新建一个窗口类,并实现Printable接口。本文以一条数据为例

java调用打印机接口

java调用打印机接口

2、实现Printable接口的print方法,使用Graphics2D相关绘制出打印的格式图片。

java调用打印机接口

3、使用PrinterJob开启打印进程,导出打印相关的pdf文件

java调用打印机接口

java调用打印机接口

java调用打印机接口

4、导出后的文件如图所示

java调用打印机接口

5、全部代码:

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.print.PageFormat;

import java.awt.print.Printable;

import java.awt.print.PrinterException;

import java.awt.print.PrinterJob;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import javax.swing.JScrollPane;

import javax.swing.JTable;

public class Frame extends JFrame implements Printable, 

ActionListener {

private Object[][] data = {{"100", "0.8", "0.1", "90"}};

//JTableb表头

private Object[] head = {"单价", "折扣", "税", "调整后价"}; 

//定义一个存放数据的JTable

private JTable table = new JTable(data, head);

//打印出一条记录的按钮

private JButton printBtn = new JButton("打印");   

private JScrollPane scrollPane = new JScrollPane(table);

//设置窗口的信息,添加各种面板按钮,及初始化按钮的监听器。

public Frame() {

setSize(800, 600); //设置窗体大小位置

add(printBtn, BorderLayout.NORTH);

add(scrollPane, BorderLayout.CENTER);

printBtn.addActionListener(this);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setVisible(true);

}

@Override

public void actionPerformed(ActionEvent e) {

//获取打印服务对象  

PrinterJob job = PrinterJob.getPrinterJob();       

job.setPrintable(Frame.this); //添加打印任务

try {  

job.print();  //执行打印任务

} catch (PrinterException e1) {  

e1.printStackTrace();  

}  

JOptionPane.showMessageDialog(this, 

"导出打印pdf文件成功");

}

@Override

public int print(Graphics graphics, PageFormat pageFormat, 

int pageIndex)

throws PrinterException {

Graphics2D g = (Graphics2D) graphics;  

int x = (int)pageFormat.getImageableX();  

int y = (int)pageFormat.getImageableY();  

switch(pageIndex){  

case 0:  

g.setColor(Color.RED);

g.drawString("单价:" + table.getValueAt(0, 0), x + 100, y + 10);

g.drawString("折扣:" + table.getValueAt(0, 1), x + 100, y + 30);

g.drawString("税率:" + table.getValueAt(0, 2), x + 100, y + 50);

g.drawString("单价:" + table.getValueAt(0, 3), x + 100, y + 70);

return PAGE_EXISTS;  

default:  

return NO_SUCH_PAGE;  

}  

}

public static void main(String[] args) {

new Frame();

}

}

  • qiyou联机宝如何充值
  • Windows server 2012如何更新网卡驱动程序
  • 台式机开机去除开机按F1键的方法
  • win10系统局域网看不到其他电脑怎么办
  • Windows XP取消设置不显示最后的用户名
  • 热门搜索
    南宁旅游攻略必玩的景点 lol小丑怎么玩 湘西旅游 做什么运动可以瘦腿 天台山旅游攻略 哺乳期可以减肥吗 淘宝怎么添加客服 碘酒怎么洗 德尔菲法的特点 经期可以喝中药吗