java 打印图片_java 实现打印(图片和文本)

该博客介绍了如何使用Java进行图片和文本的打印操作。通过`printContent`方法设置打印内容和格式,如纸张大小,然后使用`DocPrintJob`进行打印。在`print`方法中,调整Graphics2D对象进行文本的定位和打印,支持在页面正中打印内容。
摘要由CSDN通过智能技术生成

// 打印内容到指定位置

public void printContent(Map mymap )

{

printStr = "打印测试内容";// 获取需要打印的目标文本

if (printStr != null &&

printStr.length() > 0) // 当打印内容不为空时

{

PAGES = 1; //

获取打印总页数

// 指定打印输出格式

DocFlavor flavor =

DocFlavor.SERVICE_FORMATTED.PRINTABLE;

//

设置打印属性

PrintRequestAttributeSet pras = new

HashPrintRequestAttributeSet();

//

设置纸张大小,也可以新建MediaSize类来自定义大小

pras.add(MediaSizeName.ISO_A4);

DocAttributeSet das = new

HashDocAttributeSet();

// 指定打印内容

Doc doc = new

SimpleDoc(this, flavor, das);

// 定位默认的打印服务

PrintService printService = null;

printService =

PrintServiceLookup.lookupPrintServices(flavor, pras)[0];

System.out.println(printService);

// 创建打印作业

DocPrintJob job = printService.createPrintJob();

try

{

job.print(doc, pras); //

进行每一页的具体打印操作

}

catch (PrintException

pe)

{

pe.printStackTrace();

}

}

else

{

//

如果打印内容为空时,提示用户打印将取消

JOptionPane.showConfirmDialog(null,

"Sorry, Printer Job

is Empty, Print Cancelled!",

"Empty",

JOptionPane.DEFAULT_OPTION,

JOptionPane.WARNING_MESSAGE);

}

}

以上支持打印图片  如果要打印文本需要重写printable的print方法

public int print(Graphics gp, PageFormat pf, int page)throws

PrinterException{

Graphics2D g2 = (Graphics2D) gp;

g2.setPaint(Color.black); //

设置打印颜色为黑色

if (page >= PAGES) // 当打印页号大于需要打印的总页数时,打印工作结束

{

return Printable.NO_SUCH_PAGE;

}

g2.translate(pf.getImageableX(), pf.getImageableY());// 转换坐标,确定打印边界

Font font = new Font("宋体", Font.PLAIN, 24);// 创建字体

g2.setFont(font);

// 打印当前页文本

int printFontCount =

printStr.length();// 打印字数

int printFontSize = font.getSize();// Font

的磅值大小

float printX = 595 / 2; // 给定字符点阵,X页面正中

float printY

= 842 / 2; // 给定字符点阵,Y页面正中

float printMX = printX - (printFontCount *

printFontSize / 2);// 打印到正中间

float printMY = printY - printFontSize /

2;// 打印到正中间

g2.drawString(printStr, printMX, printMY); //

具体打印每一行文本,在指定位置

g2.drawString(printStr, printMX - printFontSize *

printFontCount,

printMY + printFontSize); // 具体打印每一行文本

g2.drawString(printStr, printMX + printFontSize *

printFontCount,

printMY + printFontSize); // 具体打印每一行文本

g2.drawString(printStr, printMX, printMY + printFontSize * 2); //

具体打印每一行文本

g2.drawString(printStr, printMX, printMY + printFontSize *

2);

g2.drawString(printStr, printMX, printMY + printFontSize *

2);

g2.drawString(printStr, printMX, printMY + printFontSize *

2);

return Printable.PAGE_EXISTS; // 存在打印页时,继续打印工作

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值