一个打印问题:为什么内容打印不出来. 代码如下:

uglyFairy 2005-06-22 03:09:41
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();
}
}
...全文
496 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
laughsmile 2005-07-17
  • 打赏
  • 举报
回复
实在不行,你就用:
Runtime.getRuntime().exec( "print c:\\cc.txt");
uglyFairy 2005-07-17
  • 打赏
  • 举报
回复
TO: laughsmile(海边的星空)
你好,我的MSN是:sjm428124@msn.com

可以告诉我,你的MSN吗?
uglyFairy 2005-07-17
  • 打赏
  • 举报
回复
我将
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
改成如下代码,就可以打印gif文件了啊.
DocFlavor flavor = DocFlavor.INPUT_STREAM.GIF;

而且Legend LX1+1 1201i-2401i就是我的默认打印机.
laughsmile 2005-07-16
  • 打赏
  • 举报
回复
1.你要登录打印机所连的pc机
2.你设置了这个打印机为你本机的默认打印机
laughsmile 2005-07-15
  • 打赏
  • 举报
回复
我改了一下,在我的机器上通过了,可以正常打印:
File file = new File("c:\\cc.txt");
// 设置打印格式
javax.print.DocFlavor flavor =javax.print.DocFlavor.INPUT_STREAM.AUTOSENSE;
// 定位默认的打印服务
javax.print.PrintService defaultService =javax.print.PrintServiceLookup.lookupDefaultPrintService();
try {
javax.print.DocPrintJob job = defaultService.createPrintJob();
//创建打印作业
FileInputStream fis = new FileInputStream(file); //构造待打印的文件流
//javax.print.attribute.DocAttributeSet das = new javax.print.attribute.HashDocAttributeSet();
javax.print.Doc doc =new javax.print.SimpleDoc(fis, flavor, null);
//建立打印文件格式
job.print(doc, null); //进行文件的打印
} catch (Exception e) {
e.printStackTrace();
}
uglyFairy 2005-07-15
  • 打赏
  • 举报
回复
不知道为什么啊,老天啊.我按照"laughsmile(海边的星空)"的代码改了,还不行啊.
我用的打印机是:Legend LX1+1 1201i-2401i
uglyFairy 2005-07-15
  • 打赏
  • 举报
回复
TO laughsmile(海边的星空)

目的是打印Txt文件
//设置打印格式
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;


DocAttributeSet das = new HashDocAttributeSet();
Doc doc = new SimpleDoc(fis, flavor, das); //建立打印文件格式
改为
//DocAttributeSet das = new HashDocAttributeSet();
Doc doc = new SimpleDoc(fis, flavor, null); //建立打印文件格式

还是不能打印啊(现象:打印一张空纸,没有将文件中的内容打印出来)
laughsmile 2005-07-14
  • 打赏
  • 举报
回复

DocAttributeSet das = new HashDocAttributeSet();
Doc doc = new SimpleDoc(fis, flavor, das); //建立打印文件格式
改为
//DocAttributeSet das = new HashDocAttributeSet();
Doc doc = new SimpleDoc(fis, flavor, null); //建立打印文件格式
试试
uglyFairy 2005-07-14
  • 打赏
  • 举报
回复
如果打印的文件类型是GIF,用以下代码可以实现打印功能.
DocFlavor flavor = DocFlavor.INPUT_STREAM.GIF;

如果打印的文件类型是txt,我尝试DocFlavor的所有属性,都不能实现打印功能.

不知道为什么,请高手赐教.
uglyFairy 2005-07-08
  • 打赏
  • 举报
回复
所有的DocFlavor类型,我都过了,还是不行啊.
laughsmile 2005-07-05
  • 打赏
  • 举报
回复
1.你登录了打印服务器没有。
开始->运行->输入打印服务器的ip,登录打印服务器.
2.你改改DocFlavor的类型试试
3.
PrintService[] printService 与PrintService printService[] 都是正确的。
uglyFairy 2005-07-05
  • 打赏
  • 举报
回复
上面的回复,我都测试过了,不行啊.
mofeir 2005-07-05
  • 打赏
  • 举报
回复
猪啊,你没有看回复?
uglyFairy 2005-07-05
  • 打赏
  • 举报
回复
怎么没有人关心这个问题啊
mofeir 2005-06-22
  • 打赏
  • 举报
回复
一个例子
http://www-128.ibm.com/developerworks/cn/java/j-merlin/part10/
mofeir 2005-06-22
  • 打赏
  • 举报
回复
需要错误信息。
benbenjjf54 2005-06-22
  • 打赏
  • 举报
回复
up
uglyFairy 2005-06-22
  • 打赏
  • 举报
回复
注意JDK的版本:1.4
mofeir 2005-06-22
  • 打赏
  • 举报
回复
呵呵,我的机子没有连打印机,所以printService始终是empty的,所以无法测试下去。不过你这句就有问题,语法错误
PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);

应该是
PrintService[] printService = PrintServiceLookup.lookupPrintServices(flavor, pras);

uglyFairy 2005-06-22
  • 打赏
  • 举报
回复
没有错误信息啊

62,630

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧