package print;

/*用java实现打印 ,java.awt中提供了一些打印的API,

要实现打印 ,首先要获得打印对象 ,然后继承Printable实现接口方法print ,以便

打印机进行打印 ,

最后用用Graphics2D直接输出直接输出 。

下面代码实现了简单的打印功能:

*/

import java.awt.BasicStroke;

import java.awt.Color;

import java.awt.Component;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.Image;

import java.awt.Toolkit;

import java.awt.RenderingHints;

import java.awt.font.FontRenderContext;

import java.awt.font.LineBreakMeasurer;

import java.awt.font.TextAttribute;

import java.awt.font.TextLayout;

import java.awt.geom.Point2D;

import java.awt.image.BufferedImage;

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.text.AttributedString;

import javax.swing.JApplet;

public class print implements Printable {

/** */

/**

* @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 {

System.out.println("pageIndex=" + pageIndex);

Component c = null;

//print string

String str = "中华民族是勤劳、勇敢和富有智慧的伟大民族。";

//转换成Graphics2D

Graphics2D g2 = (Graphics2D) gra;

//设置打印颜色为黑色

g2.setColor(Color.black);

//打印

起点坐标

double x = pf.getImageableX();

double y = pf.getImageableY();

switch (pageIndex) {

case 0:

//设置打印字体(字体名称、样式和点大小)(字体名称可以是物理或者

逻辑名称)

//Java平台所定义的五种字体系列:Serif、SansSerif、Monospaced、Dialog 和 DialogInput

Font font = new Font("

新宋体", Font.PLAIN, 9);

g2.setFont(font); //设置字体

//BasicStroke bs_3=new BasicStroke(0.5f);

float[] dash1 = {2.0f};

//设置打印线的属性。

//1.

线宽 2、3、不知道,4、空白的宽度,5、虚线的宽度,6、

偏移量

g2.setStroke(new BasicStroke(0.5f, BasicStroke.CAP_BUTT,

BasicStroke.JOIN_MITER, 2.0f, dash1,

0.0f));

//g2.setStroke(bs_3);//设置线宽

float heigth = font.getSize2D(); //字体高度

System.out.println("x=" + x);

// -1- 用Graphics2D直接输出

//首字符的

基线(右下部)位于用户空间中的 (x, y) 位置处 //g2.drawLine(10,10,200,300); Image src = Toolkit.getDefaultToolkit().getImage( "file:icons/filter.gif"); g2.drawImage(src, (int) x, (int) y, c); int img_Height = src.getHeight(c); int img_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); return PAGE_EXISTS; default: return NO_SUCH_PAGE; } } public static void main(String[] args) { // 通俗理解就是书、文档 Book book = new Book(); // 设置成竖打 PageFormat pf = new PageFormat(); pf.setOrientation(PageFormat.PORTRAIT); // 通过Paper设置页面的空白边距和可打印区域。必须与实际打印纸张大小相符。 Paper p = new Paper(); p.setSize(590, 840); //纸张大小 p.setImageableArea(10, 10, 590, 840); //A4(595 X 842)设置打印区域,其实0,0应该是72,72,因为A4纸的默认X,Y边距是72 pf.setPaper(p); // 把 PageFormat 和 Printable 添加到书中,组成一个页面 book.append(new PrintTest(), pf); //获取打印服务对象 PrinterJob job = PrinterJob.getPrinterJob(); // 设置打印类 job.setPageable(book); try { //可以用printDialog显示打印对话框,在用户确认后打印;也可以直接打印 //boolean a=job.printDialog(); //if(a) //{ job.print(); //} } catch (PrinterException e) { e.printStackTrace(); } } }

java套打实现_java 套打 实现相关推荐

  1. java 函数式编程 示例_Java套接字编程–套接字服务器,客户端示例

    java 函数式编程 示例 Welcome to Java Socket programming example. Every server is a program that runs on a s ...

  2. java web学习项目20套源码完整版

    java web学习项目20套源码完整版 自己收集的各行各业的都有,这一套源码吃遍所有作业项目! 1.BBS论坛系统(jsp+sql) 2.ERP管理系统(jsp+servlet) 3.OA办公自动化 ...

  3. 真香,50行Java代码爬取妹子套图!

    前言 当一个代码的工匠回首往事时,不因虚度年华而悔恨,也不因碌碌无为而羞愧,这样,当他老的时候,可以很自豪告诉世人,我曾经将代码注入生命去打造互联网的浪潮之巅,那是个很疯狂的时代,我在一波波的浪潮上留 ...

  4. java 套娃_论“套娃”

    轮"套娃"的实力,还是应该数得上那群"种花家"的"流氓兔",钓上来"鹰酱",实现三个愿望,"我要小钱钱和小钱钱 ...

  5. java习题8,java试题练习题(第8套

    <java试题练习题(第8套>由会员分享,可在线阅读,更多相关<java试题练习题(第8套(9页珍藏版)>请在人人文库网上搜索. 1.班级: 姓名: 学号: 试题共 页 加白纸 ...

  6. java逻辑符号怎么打_Java的逻辑运算符?

    逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立. 判断的结果是 true 或 false,逻辑运算符是对布尔型变量进行运算,其结果也是布尔型. & ...

  7. java异常对象引用变量_Java面向对象编程-异常处理

    第九章 异常处理 异常情况会改变正常的流程,导致恶劣的后果,为了减少损失,应该事先充分预料所有可能出现的异常,然后采取以下措施: 首先考虑避免异常,彻底杜绝异常的发生:如果不能完全避免,则尽可能地减少 ...

  8. java tcp 编程实例_Java实现基于TCP的通讯程序实例解析

    Java中的TCP通信程序 TCP可以实现两台计算机之间的数据交互通信的两端,要严格区分客户端与服务端 两端通信时的步骤: 1.服务端程序,需要事先启动,等待客户端连接 2.客户端主动连接服务器端,才 ...

  9. java dump分析工具_Java 性能分析工具 (2):Java 内置监控工具

    引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...

最新文章

  1. 英特尔 QLC 3D NAND 数据存储
  2. 卡巴斯基实用技巧推荐(卡巴斯基使用者必看)
  3. mysql cpu 内存占用_MySQL占用内存与CPU过高测试与解决办法
  4. c# 非顶层截屏_C#中三种截屏方式总结
  5. python 列表比较不同_python实现比较两段文本不同之处的方法
  6. android中AsyncTask和Handler对比
  7. 在C#中使用Irony实现SQL语句的解析
  8. Java 开发Web Service的几种方式
  9. python使用proxy
  10. java轮训算法_负载均衡轮询算法实现疑问
  11. JavaScript面试大全(二)
  12. linux下配置mysql默认编码utf8
  13. win10系统更新补丁时进度条一直卡在0%不动的解决方案
  14. KMP算法(C++版)
  15. 接收POst数据流数据
  16. LaTeX(2)——LaTeX文档基本结构
  17. kubernetes视频教程笔记 (20)-ingress
  18. bufferedwriter怎么写入tab_电脑越用越卡是怎么回事?教你三招恢复火箭般的速度...
  19. html修改访问量txt,哪位大佬帮我改一下JS谢谢,txt改html网页直接显示的,感激不尽,现在的源码只能看......
  20. HPE 3PAR StoreServ存储系统连接解决方案

热门文章

  1. Smartphone 2.0 = Phone + Service
  2. 台式电脑没鼠标怎么移动光标_不用鼠标怎么移动光标
  3. 晒图赢大奖 | 这个十一,烤仔陪你看世界!
  4. Pic18F25K80 16位模式下的定时器0配置
  5. 前端晋升ppt_web前端幻灯片.ppt
  6. OpenGLSL中处理HDR.ToneMapping(HLG)
  7. 寿光一中2021年高考成绩查询,2017年寿光高考成绩公布,捷报频传,喜获丰收!...
  8. Colab平台使用(GPU、挂载、tf版本、运行py脚本、设置点击脚本)
  9. 常见的文件头识别和修复
  10. 图像处理;C++求已知两直线方程交点