新聞中心
java 發(fā)票代碼如何實現(xiàn)
開發(fā)出一個頁面,前臺div+css+jquery即可,后臺取值存表根據(jù)不同的發(fā)票模板顯示數(shù)據(jù)給前臺讀取,具體的發(fā)票頭,金額,發(fā)票內(nèi)容等等input自己輸入
二七ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
用Java實現(xiàn)模擬發(fā)票的打印,輸入123.45,輸出壹佰貳拾叁元肆角五分,輸入123,輸出壹佰貳拾
/**
*?數(shù)字金額大寫轉(zhuǎn)換,思想先寫個完整的然后將如零拾替換成零
*?要用到正則表達式
*/
public?static?String?digitUppercase(double?n){
String?fraction[]?=?{"角",?"分"};
String?digit[]?=?{?"零",?"壹",?"貳",?"叁",?"肆",?"伍",?"陸",?"柒",?"捌",?"玖"?};
String?unit[][]?=?{{"元",?"萬",?"億"},
{"",?"拾",?"佰",?"仟"}};
String?head?=?n??0??"負":?"";
n?=?Math.abs(n);
String?s?=?"";
for?(int?i?=?0;?i??fraction.length;?i++)?{
s?+=?(digit[(int)(Math.floor(n?*?10?*?Math.pow(10,?i))?%?10)]?+?fraction[i]).replaceAll("(零.)+",?"");
}
if(s.length()1){
s?=?"整";????
}
int?integerPart?=?(int)Math.floor(n);
for?(int?i?=?0;?i??unit[0].length??integerPart??0;?i++)?{
String?p?="";
for?(int?j?=?0;?j??unit[1].length??n??0;?j++)?{
p?=?digit[integerPart%10]+unit[1][j]?+?p;
integerPart?=?integerPart/10;
}
s?=?p.replaceAll("(零.)*零$",?"").replaceAll("^$",?"零")?+?unit[0][i]?+?s;
}
return?head?+?s.replaceAll("(零.)*零元",?"元").replaceFirst("(零.)+",?"").replaceAll("(零.)+",?"零").replaceAll("^整$",?"零元整");
}
JAVA 實現(xiàn)打印用什么方法?
Print.java--打印內(nèi)容定義
[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="數(shù)據(jù)表格打印";
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="打印內(nèi)容";
public void doPrint(){
try{
m_orientation=PageFormat.PORTRAIT;
//設(shè)置打印對象,默認紙張
PrinterJob prnJob=PrinterJob.getPrinterJob();
PageFormat pageFormat=prnJob.defaultPage();
pageFormat.setOrientation(m_orientation);
m_wPage=(int)(pageFormat.getWidth());
m_hPage=(int)(pageFormat.getHeight());
//將待打印的窗體根據(jù)默認紙張設(shè)置傳入打印對象
prnJob.setPrintable(this,pageFormat);
if(!prnJob.printDialog()) return;
prnJob.print();
}catch(PrinterException ex){
ex.printStackTrace();
System.err.println("打印錯誤:"+ex.toString());
}
}
/**
* 初始化打印參數(shù)
*/
public void initPrintParameter()
{
}
/**
*構(gòu)造打印內(nèi)容,以送打印機打印
*/
public int print(Graphics pg,PageFormat pageFormat,
int pageIndex) throws PrinterException{
//初始化打印參數(shù)
initPrintParameter();
//將畫布設(shè)置為頁面大小
pg.translate((int)pageFormat.getImageableX(),
(int)pageFormat.getImageableY());
int wPage=0;
int hPage=0;
//根據(jù)打印機頁面設(shè)置調(diào)整畫布大小
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;
//為畫布設(shè)置顏色和字體
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();
//計算行高,每頁行數(shù),總行數(shù)和指定頁碼的起始行、結(jié)束行
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
自己運行一下
當(dāng)前題目:java發(fā)票打印代碼 java小票打印
網(wǎng)站URL:http://ef60e0e.cn/article/ddsgesg.html