Java的打印技术

 Java的打印功能

  DeveloperWork上分享的一篇讲解Java打印技术的文章 和  Oracle上的关于Printing的Guide : 主要用到两个包 java.awt.print and javax.print

  The basic printing operations are represented in the following sections:

  A Basic Printing Program – this section describes the Printable interface and presents a basic printing program.

  Using Print Setup Dialogs– this sections explains how to display the Print Setup Dialog.

  Printing a Multiple Page Document – this section explains how to use pagination for printing a multiple page document.

  Working with Print Services and Attributes ndash; this section teaches you about print services, how to specify the print data format, and how to create print job using the javax.print package.

  Printing the Contents of a User Interface – this section explains how to print the contents of a window or a frame.

  Printing Support in Swing Components - this section provides a brief description of the related printing functionality inSwing and refers to specific Swing classes and interfaces.

  Java打印技术的核心代码,可以参考下面的HelloWOrldPrinter,基本上来说就是建立PrinterJob与Printable接口的关系即可。


import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.awt.print.*;

public class HelloWorldPrinter implements Printable, ActionListener {

public int print(Graphics g, PageFormat pf, int page) throws

PrinterException {

if (page > 0) { /* We have only one page, and 'page' is zero-based */

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;

}

public void actionPerformed(ActionEvent e) {

PrinterJob job = PrinterJob.getPrinterJob();

job.setPrintable(this);

boolean ok = job.printDialog();

if (ok) {

try {

job.print();

} catch (PrinterException ex) {

/* The job did not successfully complete */

}

}

}

public static void main(String args[]) {

UIManager.put("swing.boldMetal", Boolean.FALSE);

JFrame f = new JFrame("Hello World Printer");

f.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {System.exit(0);}

});

JButton printButton = new JButton("Print Hello World");

printButton.addActionListener(new HelloWorldPrinter());

f.add("Center", printButton);

f.pack();

f.setVisible(true);

}

}

  本博在是将JPanel中的内容进行打印,直接将panel实现Printable接口即可,但是打印出来的页面上只有部分的Panel内容,特别是部分横向内容丢失,使用scale进行修正即可。


@Override

public int print(Graphics g, PageFormat pf, int page)

throws PrinterException {

if (page > 0) {

return NO_SUCH_PAGE;

}

Graphics2D g2d = (Graphics2D) g;

g2d.translate(pf.getImageableX(), pf.getImageableY());

g2d.scale(0.9, 0.9);

this.setSize(800, 900);

this.printAll(g2d);

return PAGE_EXISTS;

}

  另外,有一个关于equals方法的小疑问:

  出现编译错误:The method equals(VUserGroup) of type VUserGroup must override or implement a supertype method


@Override

public boolean equals(VUserGroup one) {

if (this.getUserId().equals(one.getUserId())) {

return true;

} else {

return false;

}

}

  正常的代码


public boolean equals(Object obj) {

VUserGroup one = (VUserGroup) obj;

if (this.getUserId().equals(one.getUserId())) {

return true;

} else {

return false;

}

}

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-24 20:24:22

Java的打印技术的相关文章

Tomcat与Java Web开发技术详解连载之一

web|详解 本章介绍如何在Tomcat上创建和发布Web应用.这里首先讲解Tomcat的目录结构以及Web应用的目录结构,接着介绍如何将HTML.Servlet.JSP和Tag Library部署到Web应用中,然后介绍把整个Web应用打包并发布的方法,最后介绍如何在Tomcat上配置虚拟主机. 本章侧重于讨论Web应用的结构和发布方法,所以没有对本章的Servlet和JSP的例子进行详细解释,关于Servlet和JSP的技术可以分别参考其它章节的内容. 2.1 Tomcat的目录结构 在To

Tomcat与Java Web开发技术详解连载之二

web|详解 2.2.4 部署HTML文件 在helloapp目录下加入index.htm文件,这个文件仅仅用来显示一串带链接的字符"Welcome to HelloApp", 它链接到login.jsp文件.以下是index.htm文件的代码: <html><head><title>helloapp</title></head><body ><p><font size="7"

Tomcat与Java Web开发技术详解连载之三

web|详解 2.2.8 创建并发布WAR文件 Tomcat既可以运行采用开放式目录结构的Web应用,也可以运行WAR文件.在本书配套光盘的sourcecode/chapter2/helloapp目录下提供了所有源文件,只要把整个helloapp目录拷贝到/webapps目录下,即可运行开放式目录结构的helloapp应用.在Web应用的开发阶段,为了便于调试,通常采用开放式的目录结构来发布Web应用,这样可以方便地更新或替换文件.如果开发完毕,进入产品发布阶段,应该将整个Web应用打包为WAR

JSP中使用Java的JDBC技术实现对数据库的各种操作

在JSP 中可以使用Java 的JDBC 技术,实现对数据库中表记录的查询.修改和删除等操作.JDBC 技术在JSP 开发中占有很重要的地位. JDBC(Java DataBase Connectivity)是Java 数据库连接API.简单地说, JDBC 能完成三件事: (1) 与一个数据库建立连接, (2) 向数据库发送SQL 语句, (3) 处理数据库返回的结果. JDBC 和数据库建立连接的一种常见方式是建立起一个JDBC─ODBC 桥接器.由于ODBC 驱动程序被广泛的使用,建立这种

在AIX Version 5.3中使用Java和PHP技术进行开发,第5部分

第 5 部分: 安装和集成 PHP Java Bridge 简介:在 AIX 中可以开发使用 Java 和 PHP 技术的应用程序.本系列文章共有六个部 分,本文是其中的第 5 部分,将介绍如何在 Tomcat 应用服务器中安装.设置和集成 PHP Java Bridge ,从而使得您能够开发 PHP Web 接口. 关于本系列 PHP是一种非常优秀的Web开发语言,而在业务应用程序开发方面,Java技 术十分流行.因此,为了在AIX Version 5.3 操作系统上充分利用它们的优势,专门开

在AIX Version 5.3中使用Java和PHP技术进行开发,第3部分

第 3 部分: 将 Java 业务应用程序与 DB2Version 9 进行集成 简介:在 AIX 中可以开发使用 Java 和 PHP 技术的应用程序.在获得使用 PHP 作为 基于 Web 的接口平台的好处的同时,您可以使用 Java 编程语言编写核心逻辑(或者重新部署现有的基 于 Java 的应用程序).在本文(系列文章的第 3 部分)中,介绍了如何将第 2 部分中创建的核心应用 程序连接到 DB2 数据库,以便对问卷调查的问题和回答进行存储. 关于本系列 PHP 是一种非常优秀的Web开

在AIX Version 5.3中使用Java和PHP技术进行开发,第1部分

第1部分:设置Java环境 简介:在AIX 上开发一个Java应用程序,并了解如何通过使用PHP接口扩展该应用程序以 查看基础 Java 代码.在AIX中可以开发使用Java和PHP技术的应用程序.在获得使用PHP 作为基于Web的 接口平台的好处的同时,您可以使用Java 代码作为核心逻辑(或者重新部署现有的基于Java的应用程序 ).本文是系列文章的第 1 部分,研究了AIX中 Java编程语言和PHP 集成方法的基础,提供了使用这种 结构的示例应用程序的简要概述,然后介绍了在安装Java编

下一代Java Applet插件技术

Applet回来了! 为了在网络中传递你的程序,是时候再次考虑Java Applet技术了.下一代Java插件技术以一种不同的 ,比过去更高效.更可靠的途径来运行Applet.现在你可以获得如下好处: 增强的可靠性 改进的用户体验 在后台启动Applet 内建的JNLP支持 针对每个Applet的命令行参数 堆内存大小,Java 2D API加速选项 改进的Java/JavaScript程序设计语言集成 改进的Windows Vista支持 签名的Applet现在可以在Internet Expl

Java数据对象技术JDO简介

作为异军突起的新型语言,Java定义了一个标准的运行环境,用户定义的类在其中得到执行.这些用户自定义类的实例代表了真实环境中的数据,包括储存在数据库.文件或某些大型事务处理系统中的数据,而小型系统通常也需要一种在本地负责控制数据存储的机制. 由于数据访问技术在不同的数据源类型中是不一样的,因此对数据进行访问成了给程序开发人员的一种挑战,程序员需要对每一种类型的数据源使用特定的编程接口(API),即必须至少知道两种语言来基于这些数据源开发业务应用:Java语言和由数据源所决定的数据访问语言.这种数