将数据从java传递到cups过滤器

将数据从java传递到cups过滤器,第1张

概述我正在研究打印系统,需要在每个打印文档中添加任意文本(如作者,文档哈希,一些sysvars等).我们使用Java Printing Service(javax.print)作为打印客户端和Cups作为服务器.Cups有一些称为“过滤器”的文档后处理程序.过滤器 - 是一个由Cups推出的程序.杯子通过过滤一些参数 - 其中的“工作属性”.所以,我决定将自定义

我正在研究打印系统,需要在每个打印文档中添加任意文本(如作者,文档哈希,一些sysvars等).我们使用Java Printing Service(javax.print)作为打印客户端和Cups作为服务器.

Cups有一些称为“过滤器”的文档后处理程序.

过滤器 – 是一个由Cups推出的程序.杯子通过过滤一些参数 – 其中的“工作属性”.

所以,我决定将自定义属性从java传递到cups并在过滤器中将属性作为文本添加到文档中.一切正常,文档被打印,但我没有在过滤器中获取我的属性.他们甚至没有被传递到Cups(在包嗅探器中看到它).

我已经使用getSupportedAttributeCategorIEs()来查看支持的列表(通过打印机?)属性.也许我应该以某种方式将我添加到该列表中,但我不明白如何.

我不仅限于“属性”,我只需要将java中的任意数据传递给Cups过滤器.我该怎么做?

我的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/bashecho "All args:" > /tmp/f1.logfor var in "$@"do        echo "$var," >> /tmp/f1.logdone

/tmp/f1.log看起来像:

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

MyAttr:

class MyAttr extends IntegerSyntax implements PrintRequestAttribute {    protected MyAttr(int value) {        super(value);    }    public Class
最佳答案你可以使用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));

看看是否已读入此属性,然后尝试将您的属性添加到此类集中,是否有效.
您可能想尝试实现其他属性:

SIDes属性如下所示:

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

同样的副本:

public final class copIEsextends IntegerSyntaximplements PrintRequestAttribute,PrintJobAttribute

也许尝试添加PrintJobAttribute的附加工具 总结

以上是内存溢出为你收集整理的将数据从java传递到cups过滤器全部内容,希望文章能够帮你解决将数据从java传递到cups过滤器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1047928.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)