java列印文件
㈠ 請問java如何實現列印及列印預覽功能
package com.szallcom.tools;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
import java.awt.print.PageFormat;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import wf.common.SystemProperties;
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() {
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(canvas, BorderLayout.CENTER);
nextButton.setMnemonic('N');
nextButton.addActionListener(this);
buttonPanel.add(nextButton);
previousButton.setMnemonic('N');
previousButton.addActionListener(this);
buttonPanel.add(previousButton);
closeButton.setMnemonic('N');
closeButton.addActionListener(this);
buttonPanel.add(closeButton);
this.getContentPane().add(buttonPanel, BorderLayout.SOUTH);
this.setBounds((int) ((SystemProperties.SCREEN_WIDTH - 400) / 2),
(int) ((SystemProperties.SCREEN_HEIGHT - 400) / 2), 400, 400);
}
public void actionPerformed(ActionEvent evt) {
Object src = evt.getSource();
if (src == nextButton)
nextAction();
else if (src == previousButton)
previousAction();
else if (src == closeButton)
closeAction();
}
private void closeAction() {
this.setVisible(false);
this.dispose();
}
private void nextAction() {
canvas.viewPage(1);
}
private void previousAction() {
canvas.viewPage(-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) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
PageFormat pf = PrinterJob.getPrinterJob().defaultPage();
double xoff;
double yoff;
double scale;
double px = pf.getWidth();
double py = pf.getHeight();
double sx = getWidth() - 1;
double sy = getHeight() - 1;
if (px / py < sx / sy) {
scale = sy / py;
xoff = 0.5 * (sx - scale * px);
yoff = 0;
} else {
scale = sx / px;
xoff = 0;
yoff = 0.5 * (sy - scale * py);
}
g2.translate((float) xoff, (float) yoff);
g2.scale((float) scale, (float) scale);
Rectangle2D page = new Rectangle2D.Double(0, 0, px, py);
g2.setPaint(Color.white);
g2.fill(page);
g2.setPaint(Color.black);
g2.draw(page);
try {
preview.print(g2, pf, currentPage);
} catch (PrinterException pe) {
g2.draw(new Line2D.Double(0, 0, px, py));
g2.draw(new Line2D.Double(0, px, 0, py));
}
}
public void viewPage(int pos) {
int newPage = currentPage + pos;
if (0 <= newPage && newPage < preview.getPagesCount(printStr)) {
currentPage = newPage;
repaint();
}
}
}
}
package wf.common;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.awt.Toolkit;
public final class SystemProperties {
public static final double SCREEN_WIDTH = Toolkit.getDefaultToolkit().getScreenSize().getWidth();
public static final double SCREEN_HEIGHT = Toolkit.getDefaultToolkit().getScreenSize().getHeight();
public static final String USER_DIR = System.getProperty("user.dir");
public static final String USER_HOME = System.getProperty("user.home");
public static final String USER_NAME = System.getProperty("user.name");
public static final String FILE_SEPARATOR = System.getProperty("file.separator");
public static final String LINE_SEPARATOR = System.getProperty("line.separator");
public static final String PATH_SEPARATOR = System.getProperty("path.separator");
public static final String JAVA_HOME = System.getProperty("java.home");
public static final String JAVA_VENDOR = System.getProperty("java.vendor");
public static final String JAVA_VENDOR_URL = System.getProperty("java.vendor.url");
public static final String JAVA_VERSION = System.getProperty("java.version");
public static final String JAVA_CLASS_PATH = System.getProperty("java.class.path");
public static final String JAVA_CLASS_VERSION = System.getProperty("java.class.version");
public static final String OS_NAME = System.getProperty("os.name");
public static final String OS_ARCH = System.getProperty("os.arch");
public static final String OS_VERSION = System.getProperty("os.version");
public static final String[] FONT_NAME_LIST = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
public static final Font[] FONT_LIST = GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
}
㈡ 求教,Java中如何調用列印機列印指定路徑的文檔
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
public class PrintTest4 implements Printable{
/**
* @param Graphic指明列印的圖形環境
* @param PageFormat指明列印頁格式(頁面大小以點為計量單位畢殲,1點為1英才的1/72,態租1英寸為25.4毫米。A4紙大致為595×842點)
* @param pageIndex指明頁號
*/
@Override
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
throws PrinterException {
System.out.println(">>>>>>>>>>>>>>>>>>>>>>指定頁號:"+pageIndex);
Component c = null;
//print string
String str = "中華民族是勤勞、勇敢和富有智慧的偉大民族。";
//轉換成Graphics2D
Graphics2D g2 = (Graphics2D) graphics;
//設置列印顏色為黑色
g2.setColor(Color.black);
//列印起點坐標
double x = pageFormat.getImageableX();
double y = pageFormat.getImageableY();
switch(pageIndex){
case 0:
//設置列印字體(字體名稱、樣式和點大小)(字體名稱可以是物理或者邏輯名稱)
//Java平台所定義的五種字體系列:Serif、SansSerif、Monospaced、Dialog 和 DialogInput
Font font = new Font("新宋體", Font.PLAIN, 9);
g2.setFont(font);//設置字體
//BasicStroke bs_3=new BasicStroke(0.5f);
float[] dash1 = {2.0f};
//設置列印線的屬性。
//1.線寬 2、3、不知道,4、空白的寬度,5、虛線的寬度,6、偏移量
g2.setStroke(new BasicStroke(0.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 2.0f, dash1, 0.0f));
//g2.setStroke(bs_3);//設置線寬
float heigth = font.getSize2D();//字體高度
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>x="+x);
// -1- 用Graphics2D直帆數兆接輸出
//首字元的基線(右下部)位於用戶空間中的 (x, y) 位置處
//g2.drawLine(10,10,200,300);
Image src = Toolkit.getDefaultToolkit().getImage("D:/背景圖片/yesorno.jpg");
//D:\\EclipseWorkSpace3.1\\Kfc-wuxi\\WebRoot\\image\\KFC.jpg
g2.drawImage(src,(int)x,(int)y,c);
int img_Height=src.getHeight(c);
int img_width=src.getWidth(c);
//System.out.println("img_Height="+img_Height+"img_width="+img_width) ;
g2.drawString(str, (float)x, (float)y+1*heigth+img_Height);
g2.drawLine((int)x,(int)(y+1*heigth+img_Height+10),(int)x+200,(int)(y+1*heigth+img_Height+10));
g2.drawImage(src,(int)x,(int)(y+1*heigth+img_Height+11),c);
return PAGE_EXISTS;
default:
return NO_SUCH_PAGE;
}
}
public static void main(String[] args) {
//通俗理解就是書、文檔
Book book = new Book();
//設置成豎打
PageFormat pf = new PageFormat();
pf.setOrientation(PageFormat.PORTRAIT);
//通過Paper設置頁面的空白邊距和可列印區域。必須與實際列印紙張大小相符。
Paper p = new Paper();
p.setSize(590,840);//紙張大小
p.setImageableArea(10,10, 590,840);//A4(595 X 842)設置列印區域,其實0,0應該是72,72,因為A4紙的默認X,Y邊距是72
pf.setPaper(p);
//把 PageFormat 和 Printable 添加到書中,組成一個頁面
book.append(new PrintTest4(), pf);
//獲取列印服務對象
PrinterJob job = PrinterJob.getPrinterJob();
//設置列印類
job.setPageable(book);
try {
//可以用printDialog顯示列印對話框,在用戶確認後列印;也可以直接列印
boolean a=job.printDialog();
if(a){
job.print();
}
} catch (PrinterException e) {
e.printStackTrace();
}
}
}
㈢ java調用本地列印機實現列印PDF文件,怎麼做
使用老培歲虛擬列印機pdf factory即可實現,而且其侍睜他格式文件只要是能夠列印,選擇這個虛擬列印機,都可以做成PDF文件,很簡單實用,一勞中碧永逸。
㈣ Java如何調用系統列印機列印文件
1、Desktop.getDesktop().print(new File("c:/123.jpg"));
2、private void printFileAction()
{
//構造一個文件選擇器,默認為當前目做培錄
JFileChooser fileChooser = new JFileChooser(SystemProperties.USER_DIR);
int state = fileChooser.showOpenDialog(this);//彈出文件選擇對話框
if (state == fileChooser.APPROVE_OPTION)//如果用戶選定了文件
{
File file = fileChooser.getSelectedFile();//獲取選擇的文件
//構建列印請求屬性集
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
//設置列印格式,因為未確定文件類型,這里選擇AUTOSENSE
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
//查找所有的可用列印服務
PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);
//定位默認的列印服務
PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
//顯示列印對話框純者唯
PrintService service = ServiceUI.printDialog(null, 200, 200, printService, defaultService, flavor, pras);
if (service != null)
{
try
{
DocPrintJob job = service.createPrintJob();//創建列印作業
FileInputStream fis = new FileInputStream(file);//構造待列印的文嫌漏件流
DocAttributeSet das = new HashDocAttributeSet();
Doc doc = new SimpleDoc(fis, flavor, das);//建立列印文件格式
job.print(doc, pras);//進行文件的列印
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}
在上面的示例中,因尚未確定文件的類型,所以將指定文件的列印格式定義為DocFlavor.INPUT_STREAM.AUTOSENSE。事實上,如果在進行列印之前,就已確定地知道文件的格式,如為GIF,就應定義為DocFlavor.INPUT_STREAM.GIF ;如為PDF,就應該定義為DocFlavor.INPUT_STREAM.PDF;如為純ASCII文件,就可以定義為 DocFlavor.INPUT_STREAM.TEXT_HTML_US_ASCII。等等。jdk1.4的javax.print.DocFlavor提供了極為豐富的文件流類型,你可以根據具體的應用需求進行合適的選擇。
㈤ java 列印文件
HSSFPrintSetup printSetup = sheet.getPrintSetup();2 printSetup.setVResolution((short) 600); printSetup.setPaperSize(HSSFPrintSetup.A4_PAPERSIZE); //A4紙衫租桐型大張列印4 printSetup.setLandscape(true); //橫向或坦列印
㈥ 如何用Java調用列印機列印docx,PDF文檔
具體步驟如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.DocAttributeSet;
import javax.print.attribute.HashDocAttributeSet;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.swing.JFileChooser;
public class PrintDemo {
public static void main(String[] args) {
JFileChooser fileChooser = new JFileChooser(); // 創建列印作業
File file = new File("f:/111.txt"); // 獲取選正仿擇的文件
// 構建列印請求屬性集
HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
// 設置列印格式,因為未確定類型,核桐所以選擇autosense
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
// 定位默認的列印服務
PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
InputStream fis = null;
try {
DocPrintJob job = defaultService.createPrintJob(); // 創建列印作業
fis = new FileInputStream(file); // 構造待打舉氏纖印的文件流
DocAttributeSet das = new HashDocAttributeSet();
Doc doc = new SimpleDoc(fis, flavor, das);
job.print(doc, pras);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
㈦ 如何通過JAVA代碼調用網路列印機使其列印接收到的文件
用java實現本地列印:java.awt中提供了一些列印的API,要實現列印,首先要獲得列印對象,然後繼承Printable實現介面方法print,以中橋便掘培物列印機進判液行列印,最後用用Graphics2D直接輸出直接輸出。下面代碼實現了簡單的列印功能:
㈧ JAVA)簡述如何在控制台列印出一個excel文件的全部內容,(簡述類結構和編碼過程
類結構:
首先要定義一個類,該類負責讀取Excel文件並將其內容轉換成可以在控制台列印的字元串。該類應該具有以下幾個成員:
1. 一個構造函數,用於接受Excel文件的路徑,並將其載入到內存中。
2. 一個成員變數,用於保存Excel文件的內容。
3. 一個方法,用於將Excel文件的內容轉換為可以在控制台列印的字元串。
編碼過程:
首先,從構造函數開始,使用Java POI庫中提供的API來讀取Excel文件,並將其內容存儲在成員變數中。
接下來,實現將Excel文件內容轉換為可以在控制台輸出的字元串的方法。首先使用POI庫中提供的API來讀取Excel文件的行和列,將其轉換為字元串。然後,使用換行符將每一行的字元串連接起來,最終得到一個可以在控制台輸出的字元串。
㈨ java 列印機列印文件 中文亂碼
你把工程的編碼改成UTF-8再列印試試
㈩ java中,列印File類的問題
System.out.println輸出對象時,實際會調用的是對象的toString()方法,然後輸出toString()方法返回的字元串。
而File類的toString()方法返回的就是其實例悉粗的路徑,所以你看到的輸出結果是路徑。
System.out.println(file);
// 等價於絕高System.out.println(file.toString());
// File類的並陸尺toString()方法源碼
public String toString() { return getPath();}