當前位置:首頁 » 編程語言 » java如何列印

java如何列印

發布時間: 2023-01-20 05:36:36

java如何調用本地列印機進行圖片列印

用java實現本地列印:java.awt中提供了一些列印的API,要實現列印,首先要獲得列印對象,然後繼承Printable實現介面方法print,以便列印機進行列印,最後用用Graphics2D直接輸出直接輸出。
下面代碼實現了簡單的列印功能:


importjava.awt.BasicStroke;
importjava.awt.Color;
importjava.awt.Component;
importjava.awt.Font;
importjava.awt.Graphics;
importjava.awt.Graphics2D;
importjava.awt.Image;

importjava.awt.Toolkit;
importjava.awt.RenderingHints;
importjava.awt.font.FontRenderContext;
importjava.awt.font.LineBreakMeasurer;
importjava.awt.font.TextAttribute;
importjava.awt.font.TextLayout;
importjava.awt.geom.Point2D;
importjava.awt.image.BufferedImage;
importjava.awt.print.Book;
importjava.awt.print.PageFormat;
importjava.awt.print.Paper;
importjava.awt.print.Printable;
importjava.awt.print.PrinterException;
importjava.awt.print.PrinterJob;
importjava.text.AttributedString;

importjavax.swing.JApplet;{
/**
*@paramGraphic指明列印的圖形環境
*@paramPageFormat指明列印頁格式(頁面大小以點為計量單位,1點為1英才的1/72,1英寸為25.4毫米。A4紙大致為595×842點)
*@parampageIndex指明頁號
**/
publicintprint(Graphicsgra,PageFormatpf,intpageIndex)throwsPrinterException{
System.out.println("pageIndex="+pageIndex);
Componentc=null;
//printstring
Stringstr="中華民族是勤勞、勇敢和富有智慧的偉大民族。";
//轉換成Graphics2D
Graphics2Dg2=(Graphics2D)gra;
//設置列印顏色為黑色
g2.setColor(Color.black);

//列印起點坐標
doublex=pf.getImageableX();
doubley=pf.getImageableY();

switch(pageIndex){
case0:
//設置列印字體(字體名稱、樣式和點大小)(字體名稱可以是物理或者邏輯名稱)
//Java平台所定義的五種字體系列:Serif、SansSerif、Monospaced、Dialog和DialogInput
Fontfont=newFont("新宋體",Font.PLAIN,9);
g2.setFont(font);//設置字體
//BasicStrokebs_3=newBasicStroke(0.5f);
float[]dash1={2.0f};
//設置列印線的屬性。
//1.線寬2、3、不知道,4、空白的寬度,5、虛線的寬度,6、偏移量
g2.setStroke(newBasicStroke(0.5f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER,2.0f,dash1,0.0f));
//g2.setStroke(bs_3);//設置線寬
floatheigth=font.getSize2D();//字體高度
System.out.println("x="+x);
//-1-用Graphics2D直接輸出
//首字元的基線(右下部)位於用戶空間中的(x,y)位置處
//g2.drawLine(10,10,200,300);

Imagesrc=Toolkit.getDefaultToolkit().getImage("D:\EclipseWorkSpace3.1\Kfc-wuxi\WebRoot\image\KFC.jpg");
g2.drawImage(src,(int)x,(int)y,c);
intimg_Height=src.getHeight(c);
intimg_width=src.getWidth(c);
//System.out.println("img_Height="+img_Height+"img_width="+img_width);

g2.drawString(str,(float)x,(float)y+1*heigth+img_Height);
g2.drawLine((int)x,(int)(y+1*heigth+img_Height+10),(int)x+200,(int)(y+1*heigth+img_Height+10));

g2.drawImage(src,(int)x,(int)(y+1*heigth+img_Height+11),c);

returnPAGE_EXISTS;
default:
returnNO_SUCH_PAGE;
}

}


publicstaticvoidmain(String[]args){

//通俗理解就是書、文檔
Bookbook=newBook();
//設置成豎打
PageFormatpf=newPageFormat();
pf.setOrientation(PageFormat.PORTRAIT);
//通過Paper設置頁面的空白邊距和可列印區域。必須與實際列印紙張大小相符。
Paperp=newPaper();
p.setSize(590,840);//紙張大小
p.setImageableArea(10,10,590,840);//A4(595X842)設置列印區域,其實0,0應該是72,72,因為A4紙的默認X,Y邊距是72
pf.setPaper(p);
//把PageFormat和Printable添加到書中,組成一個頁面
book.append(newPrintTest(),pf);

//獲取列印服務對象
PrinterJobjob=PrinterJob.getPrinterJob();
//設置列印類
job.setPageable(book);

try{
//可以用printDialog顯示列印對話框,在用戶確認後列印;也可以直接列印
//booleana=job.printDialog();
//if(a)
//{
job.print();
//}
}catch(PrinterExceptione){
e.printStackTrace();
}
}
}

⑵ java列印設置

1、需要一個列印服務對象。這可通過三種方式實現:
在jdk1.4之前的版本,必須要實現java.awt.print.Printable介面
或通過Toolkit.getDefaultToolkit().getPrintJob來獲取列印服務對象;
在jdk1.4中則還可以通過javax.print.PrintSerivceLookup來查找定位一個列印服務對象。
2、需要開始一個列印工作。這也有幾種實現方法:在jdk1.4之前可以通過java.awt.print.PrintJob
(jdk1.1提供的,現在已經很少用了)調用print或printAll方法開始列印工作;
也可以通過java.awt.print.PrinterJob的printDialog顯示列印對話框,
然後通過print方法開始列印;在jdk1.4中則可以通過javax.print.ServiceUI的printDialog顯示列印對話框,
然後調用print方法開始一個列印工作。
設置列印屬性
使用如下方法可以獲得PrintJob的實例用於控制列印操作: Toolkit.getPrintJob(Frame f, String jobtitle, Properties prop) 那麼對於列印屬性的設置可以通過對prop的屬性設置來實現,列印屬性包括: awt.print.destination: 可以是"printer"或"file" awt.print.printer: 列印機名 awt.print.fileName: 列印文件名 awt.print.numCopies: 列印份數 awt.print.options: 列印命令的列印選項 awt.print.orientation: 列印方向,可以是"portrait"或"landscape" awt.print.paperSize: 紙張大小,可以是"letter","legal","executive"或"a4" 具體的大小設置你自己在調試一下吧

⑶ JAVA)簡述如何在控制台列印出一個excel文件的全部內容,(簡述類結構和編碼過程

類結構:
首先要定義一個類,該類負責讀取Excel文件並將其內容轉換成可以在控制台列印的字元串。該類應該具有以下幾個成員:
1. 一個構造函數,用於接受Excel文件的路徑,並將其載入到內存中。
2. 一個成員變數,用於保存Excel文件的內容。
3. 一個方法,用於將Excel文件的內容轉換為可以在控制台列印的字元串。
編碼過程:
首先,從構造函數開始,使用Java POI庫中提供的API來讀取Excel文件,並將其內容存儲在成員變數中。
接下來,實現將Excel文件內容轉換為可以在控制台輸出的字元串的方法。首先使用POI庫中提供的API來讀取Excel文件的行和列,將其轉換為字元串。然後,使用換行符將每一行的字元串連接起來,最終得到一個可以在控制台輸出的字元串。

⑷ java 中如何實現列印

你好。 你所創建JFrame對象可以調用自己的實例方法實現列印。 JFrame jf=new JFrame(); Toolkit tl=jf.getToolkit() //返回此窗體的工具包 PrintJob p=tl.getPrintJob(Frame frame,String jobtitle,Properties props); //獲取一個 PrintJob 對象,該對象是在工具包平台上初始化某個列印操作的結果。 參數: frame - 列印對話框的父容器。不能為 null。 jobtitle - PrintJob 的標題。null 標題等同於 ""。 props - 包含零個或更多屬性的 Properties 對象。這些屬性沒有被標准化,並且在各個實現之間不一致。因此,要求作業和頁面控制的 PrintJob 應該使用此方法帶有 JobAttributes 和 PageAttributes 對象的版本。可以更新此對象來反映用戶離開時的作業選擇。可以為 null。 Graphics g=p.getGraphics() // 為組件創建一個圖形上下文。如果組件當前是不可顯示的,則此方法返回 null。 jf.paintAll(g); //列印該容器及內嵌組件; jf.paint(g); //只列印該容器; 這是個大概模型,如果你需要其他的作用,就要查JDK幫助文檔; 所有的代碼都是我查詢JDK幫助文檔所得,絕對正確,而且我以前用過。

⑸ java怎麼列印補充平面上的字

列印工作一般包含兩個部分: 1.工作管理—創建一個列印工作,並使它連接到列印機,指定列印的張數,和提供用戶選擇列印信息的對話框 2.頁面呈象——將組件添加到頁面中,並且實現跨頁面的管理(頁碼)。 首先創建一個列印工作,這個類代表列印工作,大部分與列印相關的類都位於java.awt.print包中 import java.awt.print.*; PrinterJob job = PrinterJob.getPrinterJob(); 然後提供一個通過實現Printable 介面 使得內容到頁面的代碼。 class HelloWorldPrinter implements Printable { ... } ... job.setPrintable(new HelloWorldPrinter()); 一個基本的應用一般會向用戶展示一個可供用戶選擇各種選項的對話框,比如,頁面的數量、頁面方向、或者指定一個列印機 boolean doPrint = job.printDialog(); 這個對話框一直顯示知道用戶確認選擇或者取消列印。如果用戶發送了一個列印的指令並且列印成功,則doPrint為true。如果用戶取消了列印,則doPrint為false。因為顯示的對話框是可選擇的,所以返回的值是完全的信息化。 當doPrint為true時,應用程序會通過調用PrinterJob.print來實現列印 if (doPrint) { try { job.print(); } catch (PrinterException e) { // The job did not successfully // complete } } 如果列印的過程出現問題,會拋出PrinterException。然而,因為當作業被發送到列印機的時候PrinterJob.print方法會立刻返回一個值,所以應用程序沒法發現卡紙或者缺紙等問題。這種列印的流程式控制制足以滿足基本的列印需求。 介面Printable只有一個方法: public int print(Graphics graphics, PageFormat pf, int page) throws PrinterException 類PageFormat描述了頁面的方向(portrait豎直或者垂直landscape)以及頁面的大小和以1/72nd每英寸為單位的成像區域。成像區域佔了列印機的極限的大部分。成像區域指的是邊框的內部區域,超出部分則加到下一頁。 頁的數字是從零開始計算的。 下面的代碼能夠完整的表現Printable的實現。 import java.awt.print.*; import java.awt.*; public class HelloWorldPrinter implements Printable { public int print(Graphics g, PageFormat pf, int page) throws PrinterException { // We have only one page, and 'page' // is zero-based if (page > 0) { return NO_SUCH_PAGE; } // User (0,0) is typically outside the // imageable area, so we must translate // by the X and Y values in the PageFormat // to avoid clipping. Graphics2D g2d = (Graphics2D)g; g2d.translate(pf.getImageableX(), pf.getImageableY()); // Now we perform our rendering g.drawString("Hello world!", 100, 100); // tell the caller that this page is part // of the printed document return PAGE_EXISTS; } } 這個例子的完整的代碼在HelloWorldPrinter.java中。 發送一個Graphics到列印機和發送到屏幕上在本質上是一樣的。兩者都需要實現以下步驟。 添加一個本文就跟添加一個其他的信息到Graphics2D中一樣簡單 Printer制圖工具有一個相對大多數代碼都是透明的解析度。 Printable.print()方法由列印系統自動調用,就跟Component.paint()方法在顯示的時候調用一樣。在地0,1,2 等頁系統會一直持續調用Printable.print()方法直到該方法返回NO_SUCH_PAGE。

⑹ 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

自己運行一下

⑺ java 中如何實現列印

js:<object id="WebBrowser" classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height="0" width="0"> </object>
<script type="text/javascript">
function userPrintExec()
{
document.WebBrowser.Execwb(7,1);//列印預覽
return false;
}

function userPrint(){
// var name=document.getElementById("name").value;
newwin=window.open("aa.jsp?biaoshi=11111&name=aa"); 這里改成你的name就行了
if(document.all){
newwin.moveTo(0,0)//新窗口的坐標
newwin.resizeTo(screen.width,screen.height)
//此處可設置窗口大小,如(1024, 768),不設置的話為全屏
}
return false;
}
</script> body里加: <body <%if(request.getParameter("biaoshi")!=null) {request.removeAttribute("biaoshi"); %> onload="return userPrintExec();"<%}%> > 列印按鈕: <input type="button" name="Sub" value="列印" OnClick="return userPrint()" style="float:right;"/> 可以的,接分!

⑻ java如何做列印

簡單的可以使用java.awt.PrintJob,主要就是自己在Grpahics里繪制。
復雜的就要研究javax.print包的內容了。搜索一下,能找到一些例子。

⑼ java怎麼實現列印機列印

javax.print***
可以 當圖形那樣打開,挺費勁的
想列印好看、又省事,一般是轉pdf等有格式的文檔來列印
~~~~~~~~~
~~~~~~~
~~~~~~~~~~~~
~~~~~~~~~~~~~~~~

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:585
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:881
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:574
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:761
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:677
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1005
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:249
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:108
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:799
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:705