轻量级Java Web打印解决方案

       Java Web打印通常有两种方法Appletpdf

Applet方式通常需要把打印程序、数据和依赖的程序包下载到客户端,在客户端分页打印,缺点是下载内容的比较大。

Pdf方式是在服务器端生成pdf,下载到客户端,缺点是需要客户端有pdf阅读器,javapdf的操作能力有限。

改良的方案是,在服务器端绘图输出类似pdf的打印流,与重绘流的java Applet(即:查看器)生成结果Applet,发送到客户端。

       Hg BookGraphics就是这种改良后的方案。它的程序库只有65k,查看器只有48k。它有很多特点:

l     基于J2SE1.4,跨平台

l     自带阅读器

l     目标文件小,通常是pdf1/5

l     不用修改原有打印程序,只需要替换Graphics环境

l     页面式,减少分页带来的资源消耗

l     绘图指令优化

l     嵌入软字体,客户端不存在所需字体时,自动用软字体替代

l     可以包含图片、图形、文字

l     可以包含标题目录便于阅读检索

l     支持动画、声音、提示文本、超链接

l     缩略图页面便于定位

l     可过滤打印文本,进行定位

l     可以包含标题、作者、公司等元数据信息

l     打印时根据用户纸张选择,自动缩放打印

l     支持文档和幻灯片两种查看方式

程序库下载地址:http://d.download.csdn.net/down/1892435/sqlhub

例子:

import java.awt.Color;

import java.awt.Graphics2D;

import java.awt.geom.Rectangle2D;

import java.io.FileOutputStream;

 

import com.hg.book.Book;

import com.hg.book.BookGraphics;

 

/**

 * BookGraphics测试

 * @author wanghg

 */

public class Test {

    /**

     * @param args

     */

    public static void main(String[] args) {

       try {

           //创建BookGraphics

           BookGraphics bg = new BookGraphics(new FileOutputStream("c:/test.jar"));

           //设置查看器属性

           bg.setViewerType(BookGraphics.VIEWER_TYPE_DOC);

           bg.setViewerBarVisible(true);

           bg.setViewerNavVisible(true);

           //添加Book

           Book book = bg.addBook(400, 300);

           //设置属性

           book.setTitle("BookGraphics 测试");

           book.setAuthor("wanghg");

           book.setCorporation("http://www.hgsql.com");

           book.setDescription("test");

           //添加页

           Graphics2D g = book.addPage();

           //绘图

           g.setColor(Color.cyan);

           g.fillRect(0, 0, 400, 300);

           g.setColor(Color.yellow);

           String str = "http://www.hgsql.com";

           g.drawString(str, 40, 150);

           Rectangle2D rect = g.getFont().getStringBounds(str, g.getFontRenderContext());

           rect.setFrame(40, 150 - g.getFont().getSize(), rect.getWidth(), rect.getHeight());

           g.setColor(Color.DARK_GRAY);

           g.draw(rect);

           //设置超链接

           Book.addHref(g, str, rect);

           //设置工具提示

           Book.addToolTip(g, "go:" + str, rect);

           //设置动画效果

           Book.setAnimate(g, Book.atype_left, 1, 1, 1);

           bg.close();

       } catch (Exception e) {

           e.printStackTrace();

       }

    }

}

<script type="text/javascript"> </script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值