-
JAVA 连接打印机 打印作业属性设置无效果问题 5
各位好:
我现在在做一个用JAVA 发送打印文件 到打印机上的项目但是我现在遇到一些问题,希望大家给点思路,谢谢。
《疑问一》
FileInputStream psStream;
try {
psStream = new FileInputStream("file.ps");
} catch (FileNotFoundException ffne) {
}
if (psStream == null) {
return;
}
DocFlavor psInFormat = DocFlavor.INPUT_STREAM.POSTSCRIPT;
Doc myDoc = new SimpleDoc(psStream, psInFormat, null);
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(new Copies(5));
aset.add(Sides.DUPLEX);
PrintService[] services = PrintServiceLookup.lookupPrintServices(psInFormat, aset);
if (services.length > 0) {
DocPrintJob job = services[0].createPrintJob();
try {
job.print(myDoc, aset);
} catch (PrintException pe) {}
}
首先我 电脑上 装了 4 到 5 个 不同厂商 的打印机驱动
上面的这段代码我是从JDK 1.7 API 上拷贝下来的, 我 运行时 发现 返回的 services 为空,即没有找到适合条件的 打印服务,
但是我装的这几个打印机 的驱动是支持 多份 ,双面打印的啊 ?
如果我把
aset.add(new Copies(5));
aset.add(Sides.DUPLEX);
这两行代码删掉, 那么就可以找到 我装的那4,5 个打印服务了。
这是疑问一
《疑问二》
File file=new File("D:\\1.pdf");
PrintRequestAttributeSet pras1 = new HashPrintRequestAttributeSet();
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
InputStream in= new FileInputStream(file);//这里的file是已经生成的PDF
PrintService printService1[]= PrintServiceLookup.lookupPrintServices(flavor, pras1);
PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService(); //默认的PrintService
PrintService service = ServiceUI.printDialog(null, 200, 200,printService1, defaultService, flavor, pras1);
DocPrintJob pj=service.createPrintJob();
DocAttributeSet das = new HashDocAttributeSet();
pras1.add(new Copies(2));
pras1.add(PrintQuality.HIGH);
pras1.add(Sides.DUPLEX);
pras1.add(new JobName("E2",null));
das.add(PrintQuality.HIGH);
das.add(Sides.DUPLEX);
Doc doc1=new SimpleDoc(in,flavor,das);
pj.print(doc1, pras1);
上面这段代码是我自己写的, 首先 PDF文件可以发到打印机 打印出来,但是, 诸如 我设置的
pras1.add(new Copies(2));
pras1.add(PrintQuality.HIGH);
pras1.add(Sides.DUPLEX);
pras1.add(new JobName("E2",null));
或
das.add(PrintQuality.HIGH);
das.add(Sides.DUPLEX);
文件始终 打印出来的 都是 1 份 , 单面打印, 这个是疑问 2 , 我猜想,是不是 JAVA 设置的这些打印 属性在 调用打印机驱动的时候, 没有能够将这些属性传递给打印机?还有 JAVA 的这些属性设置 是不是在不同厂商 开发的打印机打印机驱动 不一定有效果?
小弟现在正在疑惑中,希望有经验的朋友可以指点一下,谢谢。
2012年1月06日 14:14
目前还没有答案
相关推荐
Java Print Service API支持本地打印,通过`DocFlavor`和`PrintRequestAttributeSet`对象定义打印数据格式和打印属性,然后调用`PrintJob.print()`方法发送打印作业。 在实际开发过程中,你可能需要做以下步骤: 1...
JAVA连接本地打印机是指使用JAVA语言实现连接到本地打印机并打印文件的功能。本文将详细介绍JAVA实现连接本地打印机并打印文件的实现代码。 一、环境准备 在实现JAVA连接本地打印机并打印文件之前,需要准备以下...
在使用PrintServiceLookup类进行打印时,首先需要创建一个PrintRequestAttributeSet实例来定义打印属性,然后调用PrintService.createPrintJob()创建打印作业。创建作业之后,需要准备待打印的数据并将其封装成Doc...
需要注意的是,如果使用网络打印,需要确保打印机已设置为接受来自网络的打印作业。 综上所述,实现“java实现zebra打印条形码”这一功能,开发者需要对Java编程、条形码原理、Zebra编程语言以及打印机通信有一定的...
通过这个API,开发者可以创建打印作业,设置打印参数,如纸张大小、方向、副本数量等,并指定要打印的数据源。 2. **`java.awt.print`包** 这个包包含了Java打印功能的主要类和接口,如`PrinterJob`类用于创建和...
`PrintRequestAttributeSet`和`PrintJobAttributeSet`用来设置打印作业的属性,如纸张大小、方向、分辨率等。这些属性可以通过`PageFormat`对象进行设置。 8. **文件打印** 如果需要打印文件,可以读取文件内容,...
4. **设置打印机属性和创建打印作业**: 选择打印机并创建打印作业: ```java String printerId = "your_printer_id"; // 通过用户选择或预设的打印机ID PrintAttributes attributes = new PrintAttributes....
这个API是Java 2D的一部分,可以用来创建和管理打印作业。 2. **PageFormat对象**:在Java中,`PageFormat`对象包含了关于页面大小、方向和边距的信息。通过修改`PageFormat`的实例,可以设置打印的边距。例如,你...
这个类在`java.print`包中,提供了多种方法来设置打印参数、选择打印机、预览打印作业以及启动实际的打印过程。在这个Java打印demo中,我们将深入探讨`PrinterJob`的相关知识点。 1. **`PrinterJob`类的创建与获取*...
开发者可以通过Android的PrintManager API来集成打印功能,这个API提供了添加打印机、选择打印设置、预览和发送打印作业等功能。 3. **Demo打印**: "运行demo打印"通常指的是开发者为了测试打印功能而编写的一个...
例如,你可以创建一个`PrinterJobs` 实例,设置打印机连接,然后调用`print`方法来打印收据: ```javascript const Printer = require('escpos'); // 创建打印机对象 const printer = new Printer({ device: '/...
这两个接口用于设置打印请求的属性(如份数、双面打印等)和获取打印作业的属性(如状态、错误信息等)。 5. **HTML和PDF打印**: 在Web环境中,常见的打印需求可能是打印HTML页面或PDF文档。对于HTML,可以使用`...
3. **选择打印机并创建打印作业**: 使用`PrintManager`的`print()`方法,传入作业名称、`PrintDocumentAdapter`实例和所需的打印属性集: ```java String jobName = "PDF打印示例"; PrintAttributes attributes = ...
- **打印作业设置**:用户可以通过打印机属性对话框调整单个打印作业的设置。 - **Windows软件卸载**:介绍如何安全地从系统中移除HP LaserJet Pro CP1520的相关软件。 - **Windows支持的实用程序**:提到了一系列由...
在代码中,我们可以使用`PrintJobInfo.Builder`来设置打印作业的属性,例如纸张大小、颜色模式等。 在"pdfSaveAndPrint-hp"这个示例中,可能包含了实现上述功能的源代码和样例文件。解压后,开发者可以查看和学习...
例如,在操作系统中,每个打印作业都通过打印机队列进行调度,为了保证同一时间只有一个打印作业被处理,就需要使用单实例模式来确保打印机队列对象的唯一性。 #### 单实例模式的实现方式 单实例模式的实现方式有很...
1. **打印队列管理**:在多任务操作系统中,虽然计算机可能连接有多个打印机,但为了避免多个打印作业同时输出导致的混乱,通常需要一个打印队列管理器(Printer Spooler)来统一管理打印请求,此时采用单例模式确保...
2. 远程打印:支持通过SMB协议发送打印作业到网络打印机。 3. 数据备份:在Java应用中实现对远程Windows服务器或NAS设备的数据备份和恢复功能。 4. 集成:与其他Java应用或服务集成,提供对SMB网络资源的访问能力。 ...
打印过程中可能会遇到各种问题,如打印机未连接、纸张缺失等。因此,理解和处理`PrinterException`是必要的。同时,使用`PrintService`的查询方法进行预检查可以减少错误。 9. **性能优化**: 大规模打印任务可能...
Bartender SDK是一款广泛应用于制造业、物流、零售等领域的软件开发工具包,它允许程序员通过编程方式控制Bartender的所有功能,包括设计标签模板、管理数据库连接、处理打印作业和实现自动化打印流程。 【压缩包子...