java套打_java套打快递单

该博客内容展示了如何使用Java实现一个批量打印工具,通过`EMSTest`类实现了将特定数据按照预设位置打印在A4纸上。代码中用到了`Graphics2D`进行文字绘制,`PageFormat`和`PrinterJob`进行页面设置和打印任务管理。此外,还涉及到字体设置、坐标定位等细节。
摘要由CSDN通过智能技术生成

package org.sq.common.utils;

import org.apache.commons.codec.binary.Base64;

import org.apache.http.entity.StringEntity;

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.DocumentHelper;

import org.dom4j.Element;

import org.sq.core.tool.utils.OkHttpUtil;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.print.*;

public class EMSTest implements Printable{

private String[] value = null;// 所要打印的数据{ "001", "002", "003"};

private int[][] position = null;// 每个数据在图片中的坐标 { { 10, 50 }, { 30, 70 }, { 50, 90 }};

public static void main(String[] args) throws DocumentException {

printReport();

}

@Override

public int print(Graphics g, PageFormat pageFormat, int pageIndex) throws PrinterException {

// TODO Auto-generated method stub

if(pageIndex>0)

{

return Printable.NO_SUCH_PAGE;

}

Graphics2D g2d = (Graphics2D) g;

for (int i = 0; i < value.length; i++) {

String str = value[i];

int[] temp = position[i];

int x = temp[0];

int y = temp[1];

// 设置打印字体(字体名称、样式和点大小)

Font font = new Font("新宋体", Font.PLAIN, 9);

g2d.setFont(font); //设置字体

g2d.drawString(str, x, y);

}

return Printable.PAGE_EXISTS;

}

public String[] getValue() {

return value;

}

public void setValue(String[] value) {

this.value = value;

}

public int[][] getPosition() {

return position;

}

public void setPosition(int[][] position) {

this.position = position;

}

public static void printReport(){

PrinterJob pj = PrinterJob.getPrinterJob();//创建一个打印任务

PageFormat pf = PrinterJob.getPrinterJob().defaultPage();

Paper paper = pf.getPaper();

// 设置页面高和宽,A4纸为595,842

double pageWidth = 595;

double pageHeight = 810;

paper.setSize(pageWidth, pageHeight);

paper.setImageableArea(0, 0, pageWidth, pageHeight);

pf.setOrientation(PageFormat.LANDSCAPE); //设置打印方向,LANDSCAPE为横向,打印方向默认为纵向

pf.setPaper(paper);

EMSTest printTest=new EMSTest();

printTest.setValue(new String []{"寄件人", "", "张三","寄件地址", "", "山东济南高新区","收件人", "", "李四","收件地址", "", "山东济南历城区" });

printTest.setPosition(new int [][]{{ 30, 100 }, { 90,100}, { 150,100},{ 30, 130 }, { 90,130}, { 150,130} ,{ 30, 150 }, { 90,150}, { 150,150},{ 30, 170 }, { 90,170}, { 150,170} });

pj.setPrintable(printTest, pf);

if (pj.printDialog()) { //弹出打印对话框,打印对话框,用户可以通过它改变各种选项,例如:设置打印副本数目,页面方向,或者目标打印机。

try {

pj.print();

} catch (PrinterException e) {

e.printStackTrace();

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值