你可以了解下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如何实现打印及打印预览功能等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)