微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将数据从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的附加实现

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐