将数据从java传递给cupsfilter

我在打印系统上工作,并需要添加任意文本到每个打印的文件(如作者,文件哈希,一些sysvars和其他)。 我们使用Java Printing Service(javax.print)作为打印客户端,并使用Cups作为服务器。

杯子有一些称为“filter”的文件后处理程序。

filter – 是一个程序,将由杯发射。 杯子通过筛选一些参数 – “工作属性”之中。

所以,我决定将自定义属性从java传递给杯子,并将属性添加为文本以在filter中进行文档化。 一切工作无一例外,文件打印,但我没有得到我的属性在filter。 他们甚至没有传递给杯(看到在包嗅探器)。

打印和增加数组值

在没有Windows打印对话框的情况下使用PHP(javascript)在本地打印页面

Java Windows UTF-8(unicode)打印

c ++发送图像到打印机,(PRINT)

从Windows窗体打印的工具

我已经使用getSupportedAttributeCategories()来查看支持(通过打印机?)属性的列表。 也许我应该把这个列表添加到列表中,但我不知道如何。

我不局限于“属性”, 我只需要将任意数据从java传递给Cupsfilter 。 我该怎么做?

我的java代码是这样的:

MyAttrSet attrs = new MyAttrSet(); attrs.add(new MyAttr(42)); attrs.add(new copies(18)); PrintService service = PrintServiceLookup.lookupDefaultPrintService(); DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE; Doc doc = new SimpleDoc(is,flavor,null); DocPrintJob job = service.createPrintJob(); job.print(doc,attrs);

filter是一个简单的bash脚本,它打印传递给它的所有东西:

#!/bin/bash echo "All args:" > /tmp/f1.log for var in "$@" do echo "$var," >> /tmp/f1.log done

/tmp/f1.log看起来像:

All args: 87,oroboros,Java Printing,18,<- number of pages is passed! But not MyAttr some useless crap like job uuid and else...

MyAttr:

class MyAttr extends IntegerSyntax implements PrintRequestAttribute { protected MyAttr(int value) { super(value); } public Class<? extends Attribute> getCategory() { // Todo Auto-generated method stub return MyAttr.class; } public String getName() { // Todo Auto-generated method stub return "somemycustop5"; } }

发送prn文件到打印机问题:打印速度非常慢

仿真ZPL打印机

获取调用打印的应用程序的名称(path)

从C#中的Windows服务打印HTML文档,无需打印对话框

python3打印unicode到windows xp控制台编码cp437

你可以使用cups4j

Map attributes = new HashMap(); attributes.put("job-attributes","print-quality:enum:3#media:keyword:iso_a5_148x210mm"); printJob.setAttributes(attributes);

请参阅以下关于如何在Linux上升级CUPS的文章,以打破Java库和CUPS库: http ://www.cups.org/articles.PHP?L433+TFAQ+Q

现在,既然你可以打印,我认为它不是一个问题。 但是我不确定什么是MyAttrSet,它应该是一个HashPrintRequestAttributeSet

尝试:

PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); aset.add(new copies(2));

看看这个属性是否被读入,然后尝试添加你的这个集合,它是否工作或不。 你可能想尝试实现其他属性

“边”属性如下所示:

public class Sides extends EnumSyntax implements DocAttribute,PrintRequestAttribute,PrintJobAttribute { public final Object getCategory() { return Sides.class; } ... }

类似副本:

public final class copies extends IntegerSyntax implements PrintRequestAttribute,PrintJobAttribute

也许尝试添加PrintJobAttribute的附加实现

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....