一个打印问题:为什么内容打印不出来. 代码如下:
package Lib.Print;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Properties;
import java.awt.font.FontRenderContext;
import java.awt.print.*;
import javax.print.*;
import javax.print.attribute.*;
import java.io.*;
import java.awt.print.PrinterJob;
import java.awt.print.PageFormat;
import java.lang.Thread.*;
public class Print
{
String sPrintContent = "";
private int PAGES = 0;
String sPrintFile = "";
public void setPrintFile(String sPrintFile)
{
this.sPrintFile=sPrintFile;
}
public void executePrint()
{
printFileAction();
}
/*打印指定的文件*/
private void printFileAction() {
File file = new File(sPrintFile); //获取选择的文件
//构建打印请求属性集
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); //进行文件的打印
Thread.sleep(10000);
}
catch(Exception e) {
e.printStackTrace();
}
}
}
public int getPagesCount(String curStr)
{
int page = 0;
int position, count = 0;
String str = curStr;
while(str.length() > 0)
{
position = str.indexOf('\n');
count += 1;
if (position != -1)
str = str.substring(position + 1);
else
str = "";
}
if (count > 0)
{
page = count / 54 + 1;
}
return page;
}
public static void main(String[] args)
{
Print oPrint = new Print();
oPrint.setPrintFile("d:\\tmp.txt");
oPrint.executePrint();
}
}