0 0

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调用usb并口打印机.zip

    Java Print Service API支持本地打印,通过`DocFlavor`和`PrintRequestAttributeSet`对象定义打印数据格式和打印属性,然后调用`PrintJob.print()`方法发送打印作业。 在实际开发过程中,你可能需要做以下步骤: 1...

    JAVA实现连接本地打印机并打印文件的实现代码

    JAVA连接本地打印机是指使用JAVA语言实现连接到本地打印机并打印文件的功能。本文将详细介绍JAVA实现连接本地打印机并打印文件的实现代码。 一、环境准备 在实现JAVA连接本地打印机并打印文件之前,需要准备以下...

    Java如何调用TSC打印机进行打印详解

    在使用PrintServiceLookup类进行打印时,首先需要创建一个PrintRequestAttributeSet实例来定义打印属性,然后调用PrintService.createPrintJob()创建打印作业。创建作业之后,需要准备待打印的数据并将其封装成Doc...

    java实现zebra打印条形码

    需要注意的是,如果使用网络打印,需要确保打印机已设置为接受来自网络的打印作业。 综上所述,实现“java实现zebra打印条形码”这一功能,开发者需要对Java编程、条形码原理、Zebra编程语言以及打印机通信有一定的...

    java打印功能的实现

    通过这个API,开发者可以创建打印作业,设置打印参数,如纸张大小、方向、副本数量等,并指定要打印的数据源。 2. **`java.awt.print`包** 这个包包含了Java打印功能的主要类和接口,如`PrinterJob`类用于创建和...

    JAVA 打印程序

    `PrintRequestAttributeSet`和`PrintJobAttributeSet`用来设置打印作业的属性,如纸张大小、方向、分辨率等。这些属性可以通过`PageFormat`对象进行设置。 8. **文件打印** 如果需要打印文件,可以读取文件内容,...

    Android连接网络打印机(餐饮、超市小票机)

    4. **设置打印机属性和创建打印作业**: 选择打印机并创建打印作业: ```java String printerId = "your_printer_id"; // 通过用户选择或预设的打印机ID PrintAttributes attributes = new PrintAttributes....

    证件套打,设置打印机默认边距

    这个API是Java 2D的一部分,可以用来创建和管理打印作业。 2. **PageFormat对象**:在Java中,`PageFormat`对象包含了关于页面大小、方向和边距的信息。通过修改`PageFormat`的实例,可以设置打印的边距。例如,你...

    java PrinterJob 打印

    这个类在`java.print`包中,提供了多种方法来设置打印参数、选择打印机、预览打印作业以及启动实际的打印过程。在这个Java打印demo中,我们将深入探讨`PrinterJob`的相关知识点。 1. **`PrinterJob`类的创建与获取*...

    android,HP打印开发

    开发者可以通过Android的PrintManager API来集成打印功能,这个API提供了添加打印机、选择打印设置、预览和发送打印作业等功能。 3. **Demo打印**: "运行demo打印"通常指的是开发者为了测试打印功能而编写的一个...

    小票打印机new PrinterJobs() 核心方法

    例如,你可以创建一个`PrinterJobs` 实例,设置打印机连接,然后调用`print`方法来打印收据: ```javascript const Printer = require('escpos'); // 创建打印机对象 const printer = new Printer({ device: '/...

    Java web 打印

    这两个接口用于设置打印请求的属性(如份数、双面打印等)和获取打印作业的属性(如状态、错误信息等)。 5. **HTML和PDF打印**: 在Web环境中,常见的打印需求可能是打印HTML页面或PDF文档。对于HTML,可以使用`...

    Android wifi打印pdf-demo

    3. **选择打印机并创建打印作业**: 使用`PrintManager`的`print()`方法,传入作业名称、`PrintDocumentAdapter`实例和所需的打印属性集: ```java String jobName = "PDF打印示例"; PrintAttributes attributes = ...

    laserjet pro cp1520 打印机驱动使用文档

    - **打印作业设置**:用户可以通过打印机属性对话框调整单个打印作业的设置。 - **Windows软件卸载**:介绍如何安全地从系统中移除HP LaserJet Pro CP1520的相关软件。 - **Windows支持的实用程序**:提到了一系列由...

    pdfSaveAndPrint-hp.rar

    在代码中,我们可以使用`PrintJobInfo.Builder`来设置打印作业的属性,例如纸张大小、颜色模式等。 在"pdfSaveAndPrint-hp"这个示例中,可能包含了实现上述功能的源代码和样例文件。解压后,开发者可以查看和学习...

    java面向对象编程单实例模式解析

    例如,在操作系统中,每个打印作业都通过打印机队列进行调度,为了保证同一时间只有一个打印作业被处理,就需要使用单实例模式来确保打印机队列对象的唯一性。 #### 单实例模式的实现方式 单实例模式的实现方式有很...

    java设计模式之单例模式详解

    1. **打印队列管理**:在多任务操作系统中,虽然计算机可能连接有多个打印机,但为了避免多个打印作业同时输出导致的混乱,通常需要一个打印队列管理器(Printer Spooler)来统一管理打印请求,此时采用单例模式确保...

    java实现雪花飘落源码-jcifs:jCIFS源的镜像

    2. 远程打印:支持通过SMB协议发送打印作业到网络打印机。 3. 数据备份:在Java应用中实现对远程Windows服务器或NAS设备的数据备份和恢复功能。 4. 集成:与其他Java应用或服务集成,提供对SMB网络资源的访问能力。 ...

    PrintScript

    打印过程中可能会遇到各种问题,如打印机未连接、纸张缺失等。因此,理解和处理`PrinterException`是必要的。同时,使用`PrintService`的查询方法进行预检查可以减少错误。 9. **性能优化**: 大规模打印任务可能...

    mycall.rar

    Bartender SDK是一款广泛应用于制造业、物流、零售等领域的软件开发工具包,它允许程序员通过编程方式控制Bartender的所有功能,包括设计标签模板、管理数据库连接、处理打印作业和实现自动化打印流程。 【压缩包子...

Global site tag (gtag.js) - Google Analytics