标签: ipp-protocol

用Java打印到特定打印机(IPP URI)

Java中有没有办法打印到特定的IPP打印机?我发现的所有示例代码和教程都集中在如何使用以下内容打印特定类型的文档:

DocFlavor flavor = DocFlavor.INPUT_STREAM.POSTSCRIPT;
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(MediaSizeName.ISO_A4);
PrintService[] pservices =
             PrintServiceLookup.lookupPrintServices(flavor, aset);
if (pservices.length > 0) {
    DocPrintJob pj = pservices[0].createPrintJob();
    try {
        FileInputStream fis = new FileInputStream("test.ps");
        Doc doc = new SimpleDoc(fis, flavor, null);
        pj.print(doc, aset);
    } catch (FileNotFoundException fe) {
    } catch (PrintException e) { 
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码段只是打印到找到的能够打印文档的第一台打印机.在我的情况下,我想通过其URI查找打印机,但PrintServiceLookup似乎不支持这一点.我尝试过使用a PrintServiceAttributeSet而不是PrintRequestAttributeSet添加PrinterURI属性,但这并没有返回任何打印机.我怀疑查找服务正在寻找可以更改其目标URI的打印机,而不是查找具有该URI的打印机.

作为最后的手段,我想到只是枚举所PrintService返回的所有s lookupPrintServices,但URI不在任何属性中.打印机名称在那里,但我需要URI.

对于后台,我的webapp需要根据当前用户将条形码打印到特定的打印机.每个用户都与一个打印机URI相关联,该URI指向CUPS服务器上的打印机.打印机URI是我唯一的信息,我不能限制打印机名称以匹配URI或URI的子字符串.

编辑:为了澄清一点,我不需要渲染数据,我只需要将blob复制到给定的打印机.我无法弄清楚的部分是如何通过其IPP URI识别打印机.

java printing ipp-protocol

15
推荐指数
1
解决办法
2万
查看次数

将打印文档的真实用户送到IPP打印机

目前,我正在尝试以编程方式启动打印作业的用户的名称获取到映射的IPP打印机.

我不知道JOB_INFO_2结构的成员pUserName包含用于连接到IPP打印机的用户的名称而不是本地启动打印作业的用户的名称.

为了显示:

在此输入图像描述

看看两者,微软的PrintMon工具和打印机队列,它们都显示相同:

在此输入图像描述

在此输入图像描述

尽管另一个用户启动了打印作业,但它们将"uwe_keim"显示为所有者的用户.

这似乎来自用于与IPP打印机进行身份验证的用户的连接凭据:

在此输入图像描述

对于如何/是否有机会获得启动打印作业的实际用户(我需要这个用于在多用户终端环境中运行的应用程序),我真的很无能为力.

总结一下我的问题:

如何获取启动打印作业的用户的名称?(与拥有打印作业的用户的名称相反)

c windows printing winapi ipp-protocol

9
推荐指数
1
解决办法
405
查看次数

打印到远程IPP/CUPS服务器或打印机的最简单方法(在python中)是什么?

我有一个postscript文件,并希望它打印在支持IPP的设备(或CUPS服务器)上.我能做到的最小代码和依赖是什么.

使用LPR或libcups给了我很多跨平台的依赖关系.所以我的第一种方法是实现IPP的最小子集(杯子和许多现代打印机使用的协议),因为"它只是扩展的HTTP".但不幸的是,IPP客户端的代码远远多于几行,到目前为止,我发现没有IPP客户端实现仅用于打印而不管理打印服务器.

我更喜欢Python中的解决方案,但也会对oter动态语言中的某些内容感到满意.

python printing cups ipp-protocol

8
推荐指数
1
解决办法
3910
查看次数

使用没有驱动程序的IPP打印(IPP客户端)

我有一个无法安装驱动程序的设备/设备.我想通过让用户添加IP地址来添加支持网络/ IPP/AirPrint打印机的功能.

由于我不是通过Windows打印(使用IPP),我如何自己使用IPP?是否有ac#client(或任何Windows库)允许您使用IPP协议与IPP打印机进行交互?

printing network-protocols network-printers ipp-protocol

8
推荐指数
1
解决办法
9198
查看次数

如何使用HTTP的ipp(Internet打印协议)在android中打印文件?

我想从Android应用程序打印文件.同样,在谷歌搜索后,我发现了一些有用的信息,我将不得不使用HTTP的IPP(互联网打印协议).我是ipp的新手,但我使用过HTTP.所以有人可以帮助我吗?任何人都可以给我一些有用的信息或链接吗?提前致谢 ?

java printing android ipp-protocol

6
推荐指数
1
解决办法
9221
查看次数

如何:模拟 (IPP) 打印机

我想测试 IPP 应该具备的一些功能(即监控印象数;请参阅此问题),但我还没有获得硬件。我如何模拟这样的打印机?是否有虚拟 IPP 打印机的代码?

我将在 Linux 或 Windows 中工作。

printing simulate ipp-protocol

6
推荐指数
2
解决办法
6309
查看次数

使用IPP(Internet打印协议)或LPR(行式打印机远程)在android中打印文件

我的要求是在不使用任何基于云的服务的情况下从Android设备打印文件.

我已经能够使用"Raw"打印协议实现它,即只需将文件发送到端口9100的打印机IP地址即可.以下是代码段:

 client = new Socket(ip,port); //Port is 9100
 byte[] mybytearray = new byte[(int) file.length()]; //create a byte array to file
 fileInputStream = new FileInputStream(file);
 bufferedInputStream = new BufferedInputStream(fileInputStream);
 bufferedInputStream.read(mybytearray, 0, mybytearray.length); //read the file
 outputStream = client.getOutputStream();
 outputStream.write(mybytearray, 0, mybytearray.length); //write file to the output stream byte by byte
 outputStream.flush();
 bufferedInputStream.close();
 outputStream.close();
Run Code Online (Sandbox Code Playgroud)

"原始"打印协议的问题在于无法从打印机返回状态.

因此,我最近阅读了有关IPPLDR的信息,我们可以使用它从打印机获取状态.

我试图找到一种方法来使用android实现它们但没有成功.我已经完成了这个答案,但没有找到我的解决方案.

如果有人可以指导我如何在android中实现IPP或LDR,那将会非常有帮助.

提前致谢!

printing android ipp-protocol

6
推荐指数
1
解决办法
8612
查看次数

如何使用 Node.js 创建虚拟打印机

我尝试像这样创建虚拟打印机 在此输入图像描述

我尝试使用ipp-printer 模块创建虚拟打印机,但无法添加打印机

var fs = require('fs') 

var Printer = require('ipp-printer')

var printer = new Printer({name:"my-printer", port:8081})
printer.on('job', function (job) {
  console.log('[job %d] Printing document: %s', job.id, job.name)
  var filename = 'job-' + job.id + '.ps' // .ps = PostScript
  var file = fs.createWriteStream(filename)
  job.on('end', function () {
    console.log('[job %d] Document saved as %s', job.id, filename)
  })

  job.pipe(file)
})
Run Code Online (Sandbox Code Playgroud)

我在添加打印机屏幕中看不到我的打印机名称

在此输入图像描述

printers node.js ipp-protocol

6
推荐指数
0
解决办法
978
查看次数

How to dissect a CUPS job control file '/var/spool/cups/cNNNNNN'?

When printing a job to a CUPS server, you can set up the cupsd.conf parameters PreserveJobHistory and PreserveJobFiles to control how many jobs you want to keep.

CUPS always temporarily stores the actual print job files in directory /var/spool/cups/. The spool files as submitted by the print client (before CUPS' conversion chain of filters kicks in) are always named dNNNNNN-001 (starting with a 'd' as in 'datafile') where NNNNNN is the job ID assigned by CUPS. If you submit …

binaryfiles cups ipp-protocol

4
推荐指数
2
解决办法
4781
查看次数