導航:首頁 > 編程語言 > java快遞列印

java快遞列印

發布時間:2022-05-03 01:19:12

1. java如何實現列印出庫單的功能呀

列印值的是連接列印機來列印吧?
可以在後台對出庫單進行拼裝顯示到頁面,然後利用IE提供的方法進行列印當前頁來列印。。。
還有就是可以利用商業軟體來實現,實現方式也和IE差不多,後台拼裝數據 前台調用插件列印數據,相比ie要更近靈活,方便 (IE列印會彈出一個選擇框讓用戶選擇)
我推薦你使用lodop 找下這個。免費的 開發者也有提供API (如果商用建議購買 也很便宜)

2. JAVA如何實現列印快遞單功能

可以用我打來進行批量列印批量發貨的操作。

3. 用java怎樣實現批量列印

下面是實現Java批量列印功能的具體工具類,其中的Info類和UserClass為具體的快遞面單中要列印的信息,以參數的方式傳遞過來,循環調用Java PrinterJob服務進行列印;這里的快遞尺寸已經調整好,可以使用,如需添加只要根據實際的面單進行調整,也可以專門寫一個介面類的形式來創建快遞面單的尺寸,本人沒有嘗試;如遇問題歡迎留言,共同探討!
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.swing.JOptionPane;
import com.myprint.model.Info;
import com.myprint.model.UserClass;

public class PrintUtil implements Printable{
/**
* 紙張尺寸
*/
private double width;
private double height;

/**
* 列印起始坐標
*/
private double startX;
private double startY;

//列印頁數
private int pages;

//列印數據坐標
private Map<String, Float> pcoord;

//發件方信息
private SenderInfo info;

//列印數據源
private List<UserClass> sourcelist;
//private int PAGES = 0;

//private PrintPaper printpaper;

private UserObject obj;

public PrintUtil(){}

public PrintUtil(int expkind, UserObject obj, List<Object> sourcelist)
{
this.pcoord = this.pcoord == null ? new HashMap<String, Float>() : this.pcoord;
this.pcoord.clear();
this.info = info;
this.sourcelist = sourcelist;

switch(expkind)
{
case 0: //EMS
this.width = 652;
this.height = 360;
this.startX = 30;
this.startY = 80;
this.pages = this.sourcelist == null ? 0 : this.sourcelist.size();

pcoord.put("nameX", 30F);
pcoord.put("nameY", 80F + 30F);

pcoord.put("numX", 30F + 90F);
pcoord.put("numY", 80F + 30F);

pcoord.put("cmpX", 30F);
pcoord.put("cmpY", 80F + 60F);

pcoord.put("addrX", 30F);
pcoord.put("addrY", 80F + 90F);

pcoord.put("RnameX", 30F + 290F);
pcoord.put("RnameY", 80F + 30F);

pcoord.put("RnumX", 30F + 390);
pcoord.put("RnumY", 80F + 30);

pcoord.put("RcmpyX", 30F + 280);
pcoord.put("RcmpyY", 80F + 55);

pcoord.put("RaddrX", 30F + 280);
pcoord.put("RaddrY", 80F + 90);
break;
case 1://順風快遞
this.width = 632;
this.height = 412;
this.startX = 40;
this.startY = 30;
this.pages = this.sourcelist == null ? 0 : this.sourcelist.size();

pcoord.put("nameX", 285F);
pcoord.put("nameY", 126F);

pcoord.put("numX", 200F);
pcoord.put("numY", 185F);

pcoord.put("cmpX", 120F);
pcoord.put("cmpY", 126F);

pcoord.put("addrX", 120F);
pcoord.put("addrY", 145F);

pcoord.put("RnameX", 275F);
pcoord.put("RnameY", 240F);

pcoord.put("RnumX", 200F);
pcoord.put("RnumY", 300F);

pcoord.put("RcmpyX", 130F);
pcoord.put("RcmpyY", 240F);

pcoord.put("RaddrX", 130F);
pcoord.put("RaddrY", 270F);

break;
case 2://申通快遞
this.width = 652;
this.height = 360;
this.startX = 30;
this.startY = 80;
this.pages = this.sourcelist == null ? 0 : this.sourcelist.size();
pcoord.put("nameX", 42F);
pcoord.put("nameY", 100F);

pcoord.put("numX", 62F);
pcoord.put("numY", 200F);

pcoord.put("cmpX", 42F);
pcoord.put("cmpY", 126F);

pcoord.put("addrX", 42F);
pcoord.put("addrY", 155F);

pcoord.put("RnameX", 320F);
pcoord.put("RnameY", 100F);

pcoord.put("RnumX", 330F);
pcoord.put("RnumY", 200F);

pcoord.put("RcmpyX", 310F);
pcoord.put("RcmpyY", 126F);

pcoord.put("RaddrX", 310F);
pcoord.put("RaddrY", 155F);

break;
default:
break;

}
}
/**
* @param Graphic指明列印的圖形環境
* @param PageFormat指明列印頁格式(頁面大小以點為計量單位,1點為1英才的1/72,1英寸為25.4毫米。A4紙大致為595×842點)
* @param pageIndex指明頁號
**/
public int print(Graphics gra, PageFormat pf, int pageIndex) throws PrinterException {
//轉換成Graphics2D
Graphics2D g2 = (Graphics2D) gra;
//設置列印顏色為黑色
g2.setColor(Color.black);
switch(pageIndex){
case 0:
Font font = new Font("新宋體", Font.PLAIN, 13);
g2.setFont(font);//設置字體
//BasicStroke bs_3=new BasicStroke(0.5f);
float[] dash1 = {2.0f};
g2.setStroke(new BasicStroke(0.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 2.0f, dash1, 0.0f));
g2.drawString(info.getSname() == null ? "" : info.getSname(), pcoord.get("nameX"), pcoord.get("SnameY"));
g2.drawString(info.getSnum() == null ? "" : info.getSnum(), pcoord.get("numX"), pcoord.get("numY"));
g2.drawString(info.getScmp() == null ? "" : info.getScmp(), pcoord.get("cmpX"), pcoord.get("cmpY"));
g2.drawString(info.getSaddr() == null ? "" : info.getSaddr(), pcoord.get("addrX"), pcoord.get("addrY"));

g2.drawString(obj.getRname() == null ? "" : obj.getRname(), pcoord.get("rnameX"), pcoord.get("rnameY"));
g2.drawString(obj.getRnum() == null ? "" : obj.getRnum(), pcoord.get("rnumX"), pcoord.get("rnumY"));
g2.drawString(obj.getRcmpy() == null ? "" : obj.getRcmpy(), pcoord.get("rcmpyX"), pcoord.get("rcmpyY"));
g2.drawString(obj.getRaddr() == null ? "" : obj.getRaddr(), pcoord.get("raddrX"), pcoord.get("raddrY"));

return PAGE_EXISTS;
default:
return NO_SUCH_PAGE;
}

}
// 列印內容到指定位置
public void printContent()
{
if (sourcelist != null && sourcelist.size() > 0) // 當列印內容不為空時
{
//PAGES = printpaper.getSourcelist().size(); // 獲取列印總頁數
// 書、文檔
Book book = new Book();
// 設置成豎打
PageFormat pf = new PageFormat();
pf.setOrientation(PageFormat.PORTRAIT);
// 通過Paper設置頁面的空白邊距和可列印區域。
Paper p = new Paper();
p.setSize(this.width,this.height);//紙張大小
p.setImageableArea(this.startX,this.startY, this.width,this.height);//設置列印區域
pf.setPaper(p);
// 把 PageFormat 和 Printable 添加到書中,組成一個頁面
book.append(this, pf);

//獲取列印服務對象
PrinterJob job = PrinterJob.getPrinterJob();
// 設置列印類
job.setPageable(book);
try {
//直接列印
for(UserObject obj: sourcelist)
{
this.obj= obj;
job.print();
}

//}
} catch (PrinterException e) {
e.printStackTrace();
}
}
else
{
// 如果列印內容為空時,提示用戶列印將取消
JOptionPane.showConfirmDialog(null,
"對不起, 列印內容為空, 列印取消!",
"提示", JOptionPane.DEFAULT_OPTION,
JOptionPane.WARNING_MESSAGE);
}
}
}

4. java項目中如何實現單據的列印

//列印
<div id="image"></div>
<input type="submit" value="列印" onclick="print1()">

<script language="javascript">
function print1(){
var printBody = document.getElementById("image");
var printBodyHTML="";
var bodyHTML="";
if(printBodyHTML==""){
printBodyHTML = printBody.innerHTML;
}
if(bodyHTML==""){
bodyHTML = document.body.innerHTML;
}
document.body.innerHTML = printBodyHTML;
window.print();
document.body.innerHTML = bodyHTML;
}
</script>

5. 請問JAVA如何實現列印及列印預覽功能

package com.szallcom.tools;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
import java.awt.print.PageFormat;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;

import wf.common.SystemProperties;

public class PrintPreviewDialog extends JDialog implements ActionListener{

private JButton nextButton = new JButton("Next");
private JButton previousButton = new JButton("Previous");
private JButton closeButton = new JButton("Close");
private JPanel buttonPanel = new JPanel();
private PreviewCanvas canvas;

public PrintPreviewDialog(Frame parent, String title, boolean modal,
PrintTest pt, String str) {
super(parent, title, modal);
canvas = new PreviewCanvas(pt, str);
setLayout();
}

private void setLayout() {
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(canvas, BorderLayout.CENTER);

nextButton.setMnemonic('N');
nextButton.addActionListener(this);
buttonPanel.add(nextButton);
previousButton.setMnemonic('N');
previousButton.addActionListener(this);
buttonPanel.add(previousButton);
closeButton.setMnemonic('N');
closeButton.addActionListener(this);
buttonPanel.add(closeButton);
this.getContentPane().add(buttonPanel, BorderLayout.SOUTH);
this.setBounds((int) ((SystemProperties.SCREEN_WIDTH - 400) / 2),
(int) ((SystemProperties.SCREEN_HEIGHT - 400) / 2), 400, 400);
}

public void actionPerformed(ActionEvent evt) {
Object src = evt.getSource();
if (src == nextButton)
nextAction();
else if (src == previousButton)
previousAction();
else if (src == closeButton)
closeAction();
}

private void closeAction() {
this.setVisible(false);
this.dispose();
}

private void nextAction() {
canvas.viewPage(1);
}

private void previousAction() {
canvas.viewPage(-1);
}

class PreviewCanvas extends JPanel {
private String printStr;
private int currentPage = 0;
private PrintTest preview;

public PreviewCanvas(PrintTest pt, String str) {
printStr = str;
preview = pt;
}

public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
PageFormat pf = PrinterJob.getPrinterJob().defaultPage();

double xoff;
double yoff;
double scale;
double px = pf.getWidth();
double py = pf.getHeight();
double sx = getWidth() - 1;
double sy = 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);
}
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);

try {
preview.print(g2, pf, currentPage);
} catch (PrinterException pe) {
g2.draw(new Line2D.Double(0, 0, px, py));
g2.draw(new Line2D.Double(0, px, 0, py));
}
}

public void viewPage(int pos) {
int newPage = currentPage + pos;
if (0 <= newPage && newPage < preview.getPagesCount(printStr)) {
currentPage = newPage;
repaint();
}
}
}
}

package wf.common;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.awt.Toolkit;

public final class SystemProperties {

public static final double SCREEN_WIDTH = Toolkit.getDefaultToolkit().getScreenSize().getWidth();
public static final double SCREEN_HEIGHT = Toolkit.getDefaultToolkit().getScreenSize().getHeight();
public static final String USER_DIR = System.getProperty("user.dir");
public static final String USER_HOME = System.getProperty("user.home");
public static final String USER_NAME = System.getProperty("user.name");
public static final String FILE_SEPARATOR = System.getProperty("file.separator");
public static final String LINE_SEPARATOR = System.getProperty("line.separator");
public static final String PATH_SEPARATOR = System.getProperty("path.separator");
public static final String JAVA_HOME = System.getProperty("java.home");
public static final String JAVA_VENDOR = System.getProperty("java.vendor");
public static final String JAVA_VENDOR_URL = System.getProperty("java.vendor.url");
public static final String JAVA_VERSION = System.getProperty("java.version");
public static final String JAVA_CLASS_PATH = System.getProperty("java.class.path");
public static final String JAVA_CLASS_VERSION = System.getProperty("java.class.version");
public static final String OS_NAME = System.getProperty("os.name");
public static final String OS_ARCH = System.getProperty("os.arch");
public static final String OS_VERSION = System.getProperty("os.version");
public static final String[] FONT_NAME_LIST = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
public static final Font[] FONT_LIST = GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
}

6. JAVA 實現列印用什麼方法

Print.java--列印內容定義

[code]
import java.awt.*;
import java.awt.event.*;
import java.awt.print.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.event.*;
import java.util.*;
import java.io.*;

public class Print implements Printable{
int m_wPage;
int m_hPage;
int m_orientation;
Printable m_target;
int maxNumPage=1;
String title="數據表格列印";
Font titleFont=new Font("黑體",Font.BOLD,14);
boolean hasTail=true;
int tailAlign=0;
int headAlign=0;
int topSpace=0;
int leftSpace=0;

int yStart=0;
int yEnd=0;
int xStart=topSpace;
int xEnd=0;
int x=0,y=0;

String strTemp="列印內容";

public void doPrint(){
try{
m_orientation=PageFormat.PORTRAIT;
//設置列印對象,默認紙張
PrinterJob prnJob=PrinterJob.getPrinterJob();
PageFormat pageFormat=prnJob.defaultPage();
pageFormat.setOrientation(m_orientation);
m_wPage=(int)(pageFormat.getWidth());
m_hPage=(int)(pageFormat.getHeight());

//將待列印的窗體根據默認紙張設置傳入列印對象
prnJob.setPrintable(this,pageFormat);
if(!prnJob.printDialog()) return;
prnJob.print();
}catch(PrinterException ex){
ex.printStackTrace();
System.err.println("列印錯誤:"+ex.toString());
}
}
/**
* 初始化列印參數
*/
public void initPrintParameter()
{

}

/**
*構造列印內容,以送列印機列印
*/
public int print(Graphics pg,PageFormat pageFormat,
int pageIndex) throws PrinterException{
//初始化列印參數
initPrintParameter();

//將畫布設置為頁面大小
pg.translate((int)pageFormat.getImageableX(),
(int)pageFormat.getImageableY());
int wPage=0;
int hPage=0;

//根據列印機頁面設置調整畫布大小
if(pageFormat.getOrientation()==pageFormat.PORTRAIT){
wPage=(int)pageFormat.getImageableWidth();
hPage=(int)pageFormat.getImageableHeight();
}
else{
wPage=(int)pageFormat.getImageableWidth();
wPage+=wPage/2;
hPage=(int)pageFormat.getImageableHeight();
pg.setClip(0,0,wPage,hPage);
}
wPage=wPage-2*leftSpace;
hPage=hPage-2*topSpace;
xStart=leftSpace;
xEnd=wPage-2;

//為畫布設置顏色和字體
int y=topSpace;
pg.setFont(titleFont);
pg.setColor(Color.black);
//畫標題,並使其居中
Font fn=pg.getFont();
FontMetrics fm=pg.getFontMetrics();
y+=fm.getAscent();
alignText(title,pg,y,xStart,xEnd,headAlign);
y+=30;

x=leftSpace+2;

Font headerFont=new Font("宋體",Font.BOLD,14);
pg.setFont(headerFont);
fm=pg.getFontMetrics();

int h=fm.getAscent();
yStart=y-1;
y+=h;

pg.setFont(headerFont);
fm=pg.getFontMetrics();
int header=y;
h=fm.getHeight();

//計算行高,每頁行數,總行數和指定頁碼的起始行、結束行
int rowH=Math.max(h,10);
int tailH=rowH+30;
int rowPerPage=0;
int leftPix=0;
if(hasTail){
rowPerPage=(hPage-header-tailH)/rowH;
leftPix=(hPage-header-tailH)%rowH;
yEnd=hPage-leftPix-tailH+2;
}
else{
rowPerPage=(hPage-header)/rowH;
leftPix=(hPage-header)%rowH;
yEnd=hPage-leftPix+2;
}

pg.drawString(strTemp,x,y);

//畫表格邊框
pg.drawLine(xStart,yStart,xStart,yEnd);
pg.drawLine(xStart,yStart,xEnd,yStart);
pg.drawLine(xEnd,yStart,xEnd,yEnd);
pg.drawLine(xStart,yEnd,xEnd,yEnd);

//列印頁碼
if(hasTail){
int pageNumber=pageIndex+1;
String s="第"+pageNumber+"頁";
alignText(s,pg,yEnd+30,xStart,xEnd,tailAlign);
}
System.gc();
return PAGE_EXISTS;
}

/**
* 文字排列,坐標在y處,顯示範圍(start-end)
* 0表示居中顯示,1表示左對齊,2表示右對齊
*/
private void alignText(String s,Graphics pg,int y,int start,
int end,int mode){
Font fn=pg.getFont();
FontMetrics fm=pg.getFontMetrics();
int wString=fm.stringWidth(s);
int x=start;
switch(mode)
{
case 0:
if((end-start-wString)>0) x=start+(end-start-wString)/2;
break;
case 1:
break;
case 2:
if((end-start-wString)>0) x=start+(end-start-wString);
break;
}
pg.drawString(s,x,y);
}
public static void main(String[] args){
Print p=new Print();
p.doPrint();
}
}
[code]

運行方法:
>javac -d . Print.java
>java Print

自己運行一下

7. java實現快遞單連打功能

jasperreports+applet 可以實現直接調用列印機,不需要像列印word一樣先有個預覽.

閱讀全文

與java快遞列印相關的資料

熱點內容
本地sdk編譯開源代碼 瀏覽:816
伺服器是什麼等級 瀏覽:120
江蘇美女程序員 瀏覽:721
在哪個app抽aj 瀏覽:4
素數加密演示 瀏覽:280
醫美類app哪個最好 瀏覽:737
一億個隨機數用什麼演算法排序 瀏覽:616
python指定id 瀏覽:305
asp編譯原理畢業設計 瀏覽:372
文件夾怎麼用jpg格式 瀏覽:955
伺服器如何防止被封 瀏覽:257
linuxjar腳本 瀏覽:835
伺服器的波浪指示燈什麼用 瀏覽:166
python中定義常值矩陣 瀏覽:91
ftp伺服器地址怎麼填寫 瀏覽:960
2016年程序員節 瀏覽:706
小紅書里的超級解壓視頻 瀏覽:473
修麗可溯源碼被刮 瀏覽:481
程序員上岸工資 瀏覽:653
釣魚解壓方法 瀏覽:34