當前位置:編程學習大全網 - 源碼下載 - 求壹個java打印預覽的源碼,是基於桌面的程序,不是web版的

求壹個java打印預覽的源碼,是基於桌面的程序,不是web版的

兄弟,哥幫妳弄,不收費,只要給采納就可以了!代碼如下:

package?test;

import?java.awt.*;

import?java.awt.print.*;

public?class?JavaPrint?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)?{

JavaPrint?p?=?new?JavaPrint();

p.doPrint();

}

}

我的名字雷鋒,請采納~~

  • 上一篇:威海五八同城文化傳媒有限公司怎麽樣?
  • 下一篇:自組織臨界態理論的基本原理
  • copyright 2024編程學習大全網