当前位置:首页 » 编程语言 » 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