exportprinter.java
来自「用Java开发的、实现类似Visio功能的应用程序源码」· Java 代码 · 共 127 行
JAVA
127 行
/**
* $Id: ExportPrinter.java $
*
* Copyright 2004 ~ 2005 JingFei International Cooperation LTD. All rights reserved.
*
*/
package com.jfimagine.jfgraph.transfer;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.print.Printable;
import java.awt.print.PrinterJob;
import java.awt.print.PageFormat;
import java.awt.print.PrinterException;
import com.jfimagine.jfgraph.shape.union.JFPage;
import com.jfimagine.jfgraph.shape.decorate.JFPageFormat;
import com.jfimagine.jfgraph.geom.Rect;
import com.jfimagine.utils.log.*;
/**
* ExportPrinter class is used to print current page or list to printer.
*
* @author CookieMaker
*
* @version $Revision: 1.3.0 $
*/
public class ExportPrinter extends ExportBase implements Printable {
/**an internal log utility*/
private JFLogger m_logger=JFLogManager.getLogger(this.getClass());
/** current tiled printing page index */
private int m_pageIndex=0;
/**
* Export current page or list to a specified output.
*/
public boolean export(){
prepareExport();
print();
return true;
}
/** A major method to start printing graphs.*/
public void print() {
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setJobName("JFDraw Document");
if (printJob.printDialog()){
try {
int copies =printJob.getCopies();
switch (getOutputType()){
case OUTPUTTYPE_PAGE:
try{
for (int i=1; i<=copies; i++){
int totalPage =getOutputPage().getTiledPageCount();
for (m_pageIndex=0; m_pageIndex<totalPage; m_pageIndex++){
printJob.setPrintable(this,getOutputPage().getPage().getPageFormat().getPageFormat());
printJob.print();
}
}
}catch(Exception e){
}
break;
case OUTPUTTYPE_LIST:
//create a default page format
for (int i=1; i<copies; i++){
printJob.setPrintable(this,new PageFormat());
printJob.print();
}
break;
}
} catch(PrinterException pe) {
m_logger.error("Error printing: " + pe);
}
}
}
public int print(Graphics g,PageFormat pageFormat, int pageIndex) {
if (pageIndex > 0) {
return(NO_SUCH_PAGE);
} else {
Graphics2D g2d = (Graphics2D)g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
switch (getOutputType()){
case OUTPUTTYPE_PAGE:
//get the rectangular area for each tiled page.
Rect rect =getOutputPage().getTiledPageArea(m_pageIndex);
int x =(int)rect.getX();
int y =(int)rect.getY();
int w =(int)rect.getWidth();
int h =(int)rect.getHeight();
g2d.translate(-x,-y);
m_outputPage.draw(g2d);
g2d.clip(new java.awt.Rectangle(0,0,w,h));
break;
case OUTPUTTYPE_LIST:
draw(g2d);
break;
}
return(PAGE_EXISTS);
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?