如何在java web项目中实现打印功能,比如一

如何在java web项目中实现打印功能,比如一,第1张

你可以了解下jatoolsprint 目前所遇到的打印问题都可以解决。

不过要装一个控件。大小60K

这是他们网上的介绍。你可以了解下。

jatoolsPrinter (杰表打印控件)是一款实现网页套打的专用工具。作为web应用开发者,我们经常会遇到在浏览器中打印报表、票据的需求,这些需求浏览器本身的打印功能一般不能满足, 如精确分页,套打等。这就需要有一种能解决常见的浏览器端打印问题的软件工具,这也是 jatoolsPrinter 的研发背景。

jatoolsPrinter 的特点是可以直接对web页面进行精确的分页打印。jatoolsPrinter 通过在网页中嵌入控件,解决了web客户端精确打印,批量打印,打印配置自动保留等问题。 具体功能有:

支持设置打印参数,指定输出打印机、纸张类型,打印方向(横、竖)等 。

支持html格式的页脚、页眉设置,也就是说,页脚页眉可设置等,如公司logo。

支持程序分页与自动分页。

支持打印参数自动保留,待下一次打印同一票据时,自动设置,这使客户端也可以控制打印参数。

支持打印预览,支持预览时指定页、指定份数打印。

支持直接打印指定票据的URL。

支持票据及其附件的批量打印。

支持取得本机中的可用打印机,可用纸张类型列表,帮您设计出更友好的参数设置界面。

支持回调,可以帮助您在打印后自动处理有关事务,比如打印后自动关闭窗口、自动递交表单数据等。

支持票据套打时,底图仅在打印预览时显示,不输出到打印机。

小巧,整个控件只有60K。不需要额外的软件包支持。

与您项目采用的技术标准无关,J2EE、NET 项目均可。

IE 55+ 中适用。

public int print(Graphics gra, PageFormat pf, int pageIndex) throws PrinterException {

Systemoutprintln("pageIndex=" + pageIndex);

Component c = null;

//print string

String str = "

Hello Word!

";

//转换成Graphics2D

Graphics2D g2 = (Graphics2D) gra;

//设置打印颜色为黑色

g2setColor(Colorblack);

//打印起点坐标

double x = pfgetImageableX();

double y = pfgetImageableY();

switch (pageIndex) {

case 0:

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

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

Font font = new Font("新宋体", FontPLAIN, 9);

g2setFont(font);//设置字体

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

float[] dash1 = {20f};

//设置打印线的属性。

//1线宽 2、3、不知道,4、空白的宽度,5、虚线的宽度,6、偏移量

g2setStroke(new BasicStroke(05f, BasicStrokeCAP_BUTT, BasicStrokeJOIN_MITER, 20f, dash1, 00f));

//g2setStroke(bs_3);//设置线宽

float heigth = fontgetSize2D();//字体高度

Systemoutprintln("x=" + x);

// -1- 用Graphics2D直接输出

//首字符的基线(右下部)位于用户空间中的 (x, y) 位置处

//g2drawLine(10,10,200,300);

Image src = ToolkitgetDefaultToolkit()getImage("F:\\workspace\\QQpng");

g2drawImage(src, (int) x, (int) y, c);

int img_Height = srcgetHeight(c);

int img_width = srcgetWidth(c);

//Systemoutprintln("img_Height="+img_Height+"img_width="+img_width) ;

g2drawString(str, (float) x, (float) y + 1 heigth + img_Height);

g2drawLine((int) x, (int) (y + 1 heigth + img_Height + 10), (int) x + 200, (int) (y + 1 heigth + img_Height + 10));

g2drawImage(src, (int) x, (int) (y + 1 heigth + img_Height + 11), c);

return PAGE_EXISTS;

default:

return NO_SUCH_PAGE;

}

}

package comszallcomtools;

import javaawtBorderLayout;

import javaawtColor;

import javaawtFrame;

import javaawtGraphics;

import javaawtGraphics2D;

import javaawteventActionEvent;

import javaawteventActionListener;

import javaawtgeomLine2D;

import javaawtgeomRectangle2D;

import javaawtprintPageFormat;

import javaawtprintPrinterException;

import javaawtprintPrinterJob;

import javaxswingJButton;

import javaxswingJDialog;

import javaxswingJPanel;

import wfcommonSystemProperties;

public class PrintPreviewDialog extends JDialog implements ActionListener{

private JButton nextButton = new JButton("Next");

private JButton previousButton = new JButton("Previous");

private JButton closeButton = new JButton("Close");

private JPanel buttonPanel = new JPanel();

private PreviewCanvas canvas;

public PrintPreviewDialog(Frame parent, String title, boolean modal,

PrintTest pt, String str) {

super(parent, title, modal);

canvas = new PreviewCanvas(pt, str);

setLayout();

}

private void setLayout() {

thisgetContentPane()setLayout(new BorderLayout());

thisgetContentPane()add(canvas, BorderLayoutCENTER);

nextButtonsetMnemonic('N');

nextButtonaddActionListener(this);

buttonPaneladd(nextButton);

previousButtonsetMnemonic('N');

previousButtonaddActionListener(this);

buttonPaneladd(previousButton);

closeButtonsetMnemonic('N');

closeButtonaddActionListener(this);

buttonPaneladd(closeButton);

thisgetContentPane()add(buttonPanel, BorderLayoutSOUTH);

thissetBounds((int) ((SystemPropertiesSCREEN_WIDTH - 400) / 2),

(int) ((SystemPropertiesSCREEN_HEIGHT - 400) / 2), 400, 400);

}

public void actionPerformed(ActionEvent evt) {

Object src = evtgetSource();

if (src == nextButton)

nextAction();

else if (src == previousButton)

previousAction();

else if (src == closeButton)

closeAction();

}

private void closeAction() {

thissetVisible(false);

thisdispose();

}

private void nextAction() {

canvasviewPage(1);

}

private void previousAction() {

canvasviewPage(-1);

}

class PreviewCanvas extends JPanel {

private String printStr;

private int currentPage = 0;

private PrintTest preview;

public PreviewCanvas(PrintTest pt, String str) {

printStr = str;

preview = pt;

}

public void paintComponent(Graphics g) {

superpaintComponent(g);

Graphics2D g2 = (Graphics2D) g;

PageFormat pf = PrinterJobgetPrinterJob()defaultPage();

double xoff;

double yoff;

double scale;

double px = pfgetWidth();

double py = pfgetHeight();

double sx = getWidth() - 1;

double sy = getHeight() - 1;

if (px / py < sx / sy) {

scale = sy / py;

xoff = 05 (sx - scale px);

yoff = 0;

} else {

scale = sx / px;

xoff = 0;

yoff = 05 (sy - scale py);

}

g2translate((float) xoff, (float) yoff);

g2scale((float) scale, (float) scale);

Rectangle2D page = new Rectangle2DDouble(0, 0, px, py);

g2setPaint(Colorwhite);

g2fill(page);

g2setPaint(Colorblack);

g2draw(page);

try {

previewprint(g2, pf, currentPage);

} catch (PrinterException pe) {

g2draw(new Line2DDouble(0, 0, px, py));

g2draw(new Line2DDouble(0, px, 0, py));

}

}

public void viewPage(int pos) {

int newPage = currentPage + pos;

if (0 <= newPage && newPage < previewgetPagesCount(printStr)) {

currentPage = newPage;

repaint();

}

}

}

}

package wfcommon;

import javaawtDimension;

import javaawtFont;

import javaawtGraphicsEnvironment;

import javaawtToolkit;

public final class SystemProperties {

public static final double SCREEN_WIDTH = ToolkitgetDefaultToolkit()getScreenSize()getWidth();

public static final double SCREEN_HEIGHT = ToolkitgetDefaultToolkit()getScreenSize()getHeight();

public static final String USER_DIR = SystemgetProperty("userdir");

public static final String USER_HOME = SystemgetProperty("userhome");

public static final String USER_NAME = SystemgetProperty("username");

public static final String FILE_SEPARATOR = SystemgetProperty("fileseparator");

public static final String LINE_SEPARATOR = SystemgetProperty("lineseparator");

public static final String PATH_SEPARATOR = SystemgetProperty("pathseparator");

public static final String JAVA_HOME = SystemgetProperty("javahome");

public static final String JAVA_VENDOR = SystemgetProperty("javavendor");

public static final String JAVA_VENDOR_URL = SystemgetProperty("javavendorurl");

public static final String JAVA_VERSION = SystemgetProperty("javaversion");

public static final String JAVA_CLASS_PATH = SystemgetProperty("javaclasspath");

public static final String JAVA_CLASS_VERSION = SystemgetProperty("javaclassversion");

public static final String OS_NAME = SystemgetProperty("osname");

public static final String OS_ARCH = SystemgetProperty("osarch");

public static final String OS_VERSION = SystemgetProperty("osversion");

public static final String[] FONT_NAME_LIST = GraphicsEnvironmentgetLocalGraphicsEnvironment()getAvailableFontFamilyNames();

public static final Font[] FONT_LIST = GraphicsEnvironmentgetLocalGraphicsEnvironment()getAllFonts();

}

public class Shape4 {

public static void main(String[] args) {

// TODO Auto-generated method stub

for(int i = 5; i > 0; i--){

for(int j = 0; j <= 4; j++){

if(j < i ){

Systemoutprint("");

}else{

Systemoutprint("  ");

}

}

Systemoutprintln();

}

}

}

自己仔细看看逻辑,不是很难,多找i,j的关系,自己多画些图形,比如:

                     1                                              

                   2   3                                      

                4   5   6                              

              7   8    9   10                        

java打好基础比较重要,祝你成功

拓展:

1、Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

2、Java是由Sun Microsystems公司推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称。由James Gosling和同事们共同研发,并在1995年正式推出。Java最初被称为Oak,是1991年为消费类电子产品的嵌入式芯片而设计的。1995年更名为Java,并重新设计用于开发Internet应用程序。

3、用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器均支持Javaapplet。另一方面,Java技术也不断更新。Java自面世后就非常流行,发展迅速,对C++语言形成有力冲击。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。2010年Oracle公司收购Sun Microsystems。

以上就是关于如何在java web项目中实现打印功能,比如一全部的内容,包括:如何在java web项目中实现打印功能,比如一、java怎么打印Hello Word!、请问JAVA如何实现打印及打印预览功能等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10211229.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存