问题标签 [cups]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
9027 浏览

php - PHP 服务器端打印 Ubuntu 服务器

我一直在寻找执行此操作所需的内容,并最终感到有些困惑。

让我们直截了当地说,这是一个基于本地的 Intra-net,我知道 PHP 是服务器端的。

我在基于 Web 的 PHP、JAVA、Jquery Idea 上运行公司管理解决方案。我们想直接从“LINUX”服务器打印报告和收据等。

我已经在服务器上安装了 cups 并且服务器打印正常,我现在只是坚持是否真的可以让服务器打印我们直接从 PHP 代码生成的 pdf 文件。

即使我们有一个 bash 脚本来运行并检查一个目录打印 pdf 然后删除它,我也会很高兴,即使我暂时认为这是一种解决方法。

就像我说的,我确实明白,如果这是在 WWW 上完成的,那么就会有某些可以利用的漏洞。如果我要在 www 上运行该系统,我将拥有一个完全不同的站点,该站点不允许打印,并且不需要此功能。

先感谢您

亚历克斯

0 投票
2 回答
10684 浏览

cocoa - 使用 CUPS 从任何 Mac OS X 应用程序对过滤器/后端进行编程以“打印到 PDF”

好的,这就是我想要做的。我想添加一个打印选项,将用户的文档打印到 PDF 中,并在将其发送到设备之前添加一些标题。

我想我的问题是:如何为将启动我一直在开发的应用程序的用户添加一个虚拟“打印机”驱动程序,该应用程序将制作 PDF(或制作 PDF 并启动我的应用程序并引用新生成的 PDF )? 如何与 CUPS 交互以生成 PDF?我不确定我是否清楚,所以让我知道更多信息是否会有所帮助。

我已经使用 CUPS 教程完成了此打印,并且似乎一切都设置好了,但该文件似乎从未出现在适当的临时位置。如果有人正在寻找用户端 PDF 打印机,那么这个 cups-pdf-for-mac-os-x是可以通过安装程序工作的,但是当我遇到相同的问题时,指定目录中没有文件出现下载源代码并按照自述文件中的说明进行操作。如果有人可以通过终端让这些中的任何一个在 Mac 上工作,请让我一步一步地知道你是如何做到的。

0 投票
1 回答
754 浏览

c - 如何使用 cups API 添加 System V 过滤器?

我需要以编程方式将打印机添加到安装了 System V 过滤器的杯子中。现在我正在使用以下代码来创建添加打印机的请求:

为了交谈:

这似乎正确地将打印机添加到 cups 系统,因为我可以使用以下命令向它发送打印:

我的第一个想法是将我想用作过滤器的文件复制到/etc/cups/interfaces目录中并调用它myptr。我这样做了,给了它正确的用户、组和权限,但它似乎不起作用。我什至尝试sleep 60在脚本的前面加上 a ,但它从未出现在ps.

我尝试使用lpadmin如下方式添加打印机,它可以正常工作:

我必须打电话cupsacceptcupsenable然后,但打印机工作正常,它通过我的过滤器发送打印。 lpadmin正确地将my.serial.filter文件从其中复制/tmp/etc/cups/interfaces命名myptr2,就像我在程序中所做的那样,而且,对于我的一生,我在任何杯子配置文件中都找不到对过滤器的任何引用,这让我觉得我错过了步。尽管如此,myptr2我添加的打印机lpadmin可以正常工作,而myptr我使用 API 添加的打印机在打印时不会通过过滤器进行打印

在我进行的各种 Google 搜索中,我已经阅读了CUPS 实施HTTP 和 IPP API 文档,我最接近的是,在前者中,有一条关于CUPS-Add-Modify的评论-打印机操作显示:

CUPS-Add-Modify-Printer 请求可以选择后跟要用于打印机的 PPD 文件或 System V 接口脚本。“ppd-name”属性使用本地 CUPS PPD 文件覆盖附加到请求末尾的任何文件。

这导致我尝试使用

将 szFilter 设置为"/tmp/my.serial.filter"and "/etc/cups/interfaces/myptr"(当然,在单独的测试中),但无济于事。

谁能告诉我哪里可能出错了?

0 投票
1 回答
2467 浏览

macos - 对发送到 CUPS 打印队列的文件运行脚本?

我正在尝试配置 Mac OS X 打印队列,以便脚本可以对打印的每个文件进行一些处理,然后再将其转发到另一台 CUPS 打印机(在同一主机上)。

我一直在阅读 CUPS 并找到了一篇文章,描述了如何使用 lpadmin 配置具有“System V 样式接口脚本”的队列,但需要注意的是,这样的队列被视为“通用打印机”。我认为这意味着用户在从“打印”对话框提交作业时失去了选择纸盘等的所有能力。那是对的吗?

[这使得这种方法不适合我的目的,因为最终目的地是具有非标准纸张尺寸的 POS 收据打印机和用于切割纸卷、打开现金抽屉等的打印作业选项。]

有没有更好的方法来实现我的目标,即简单地在通过特定 CUPS 打印队列打印的每张收据上运行脚本?

0 投票
1 回答
11039 浏览

linux - CUPS 旁路接口

我有一台服务器,在该服务器上,我将几台串行打印机设置为杯子中的原始队列。在每一个上,我都安装了接口脚本来执行一些简单的输出操作,并使用在服务器上运行的应用程序来处理 IPC,并且喜欢直接连接到打印机并写入它们,这与 cups 认为的不太合适他完全控制打印机设备。那里的一切似乎都在工作。

在服务器上输入另一个应用程序,虽然它确实通过了 cups(在通过自己的打印假脱机程序进行假脱机之后),但似乎正在将特定于打印机的转义码注入到它打印出来的文件中。换句话说,此应用程序产生的打印不仅仅是纯文本字符流,而是包含打印机要解释的二进制控制代码。

我遇到的问题是,当 cups 从第二个应用程序接收此类文件时,它似乎绕过了我的接口。我通过设置两个几乎相同的打印文件对此进行了测试。第一个包含纯文本“你好,世界!” 后跟换行符;第二个包含其中一台打印机的一些转义码,然后是“Hello,world!” 和换行符。然后我在我的打印机界面上添加了一条“sleep 5”行,这样打印时会有明显的延迟。

当我使用 lp 打印第一个文件时,五秒钟内什么也没发生,之后打印机恢复活力并写下“Hello, world!”。但是,当我使用完全相同的lp命令打印第二个文件时,它立即打印出“Hello, world!” 不睡觉。我还注意到,我可以使用 " -o raw" 选项lp来强制对第一个文件执行相同的行为(立即将其打印出来,没有 5 秒的延迟)。

我的猜测是,cups 正在查看正在打印的实际数据并试图确定其类型,当它在数据中看到打印机转义码时,它决定这是“原始”打印并绕过接口。这不是我所期望的行为,因为我首先将打印机设置为“原始”队列并假设这意味着杯子只会传递通过接口发送给它的任何东西;尽管如此,这是我看到的行为。

我的问题是:有没有办法向 cups 发送一个选项(除了-o raw,它似乎也绕过了界面)告诉他不要检测接收到的打印数据的类型并继续并将其发送到界面脚本? 或者,有没有办法指定传入数据的格式(例如,告诉 cups 它正在接收的是“纯文本”,即使它包含转义码),这样 cups 就不会查看它并简单地将其传递给界面?

0 投票
2 回答
11537 浏览

epson - 使用 CUPS 和热敏打印机打印 postscript 文档

我在 Ubuntu 12.04 中安装了一个 epson TM-T20,使用官方驱动。这是一台热敏打印机,我使用的是 80 毫米纸。

我的问题:当我打印图像(使用附言文档)时,会浪费大量纸张,因为图像使用了大约 5 厘米,而打印机在图像发出 25 厘米的白纸之前。

我使用以下命令将文档发送到打印机:

打印机打印图像(200x200 图像),但首先会发出大量未打印的纸张。

CUPS 无法识别打印机(使用 localhost:631 的 Web 界面)。然后我使用以下过程安装它:

然后打印机出现在 CUPS Web 界面中,我对其进行了配置(波特率、位奇偶校验等)。

当我发送一些文本时,打印机工作正常。

这是打印机 ppd 的一部分:

我想这种浪费纸张是因为 ppd 文件中出现的 297mm 长。然后我尝试添加另一个100mm而不是297mm的配置,但问题仍然存在。

我也尝试将标签 %%DocumentMedia 添加到 ps 文件,但同样的问题:

任何的想法?

0 投票
1 回答
1763 浏览

local - CUPS @LOCAL 值

我有两台机器。一个使用 CUPS 1.5.0,另一个使用 CUPS 1.6.1。两台机器在同一个本地网络上。我想要全面发现网络上的打印机。如果我运行以下命令:

在两台机器上我得到不同的结果。带有 CUPS 1.5.0 的那个也是我想要从另一台带有 CUPS 1.6.1 的机器上得到的结果。

我解决了这个问题!@LOCALCUPS 中有一个变量。上面的命令等于:

问题是在第二种情况下(CUPS 1.6.1)的值@LOCAL是机器的本地 IP(192.168.3.69)而不是广播(192.168.3.255)。

如果我在机器 2 上运行以下命令,则一切正常:

请解释我如何配置@LOCAL变量的值。或者为什么 CUPS 1.5.0 在安装时可以很好地配置它而 1.6.1 没有?(安装后我什么都没做,效果很好)

0 投票
1 回答
2847 浏览

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

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

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

Filter - 是一个程序,将由 Cups 推出。Cups pass 过滤了一些参数——其中的“工作属性”。

因此,我决定将自定义属性从 java 传递给 cups,并将属性作为文本添加到过滤器中的文档中。一切正常,打印文档,但我没有在过滤器中获得我的属性。它们甚至没有传递给 Cups(在数据包嗅探器中看到)。

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

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

我的java代码是这样的:

Filter 是一个简单的 bash 脚本,它打印传递给它的所有内容:

/tmp/f1.log 看起来像:

我的属性:

0 投票
1 回答
1740 浏览

printing - 将后记和原始数据打印到行式打印机会产生多余的上边距

我们有一个自定义应用程序,当在 Unix 下打印时,通过 Adob​​e 的 acroread Unix 命令将 PDF 文件管道化以生成 PostScript 文件,然后使用 lp 命令将其发送到打印机。我一直在处理一台行式打印机,一台旧的 Epson LX-300+,我们的一个客户使用它来打印连续支票表格——打印机在表格顶部生成了多余的空白边距并阻止我在预印表格的关键位置打印。

我已经尝试了几乎所有我能拿到的东西。我正在使用自定义 PPD,因此我可以设置这些连续表单所需的自定义页面大小。我什至尝试使用 lp -o raw 将原始文本打印到打印机,但它仍然会在顶部生成空白空间。

这是我添加到 PPD 以设置自定义页面大小的行:

我什至尝试从以下位置修改 HWMargins 设置:

无济于事。

有什么限制我吗?我可以添加某种形式的 ESC/PCL/PJL 命令来覆盖打印机的硬件限制吗?请记住,这种打印机型号目前正用于打印支票,并且使用原始数据,尽管它是通过 Windows 进行的,而且我无法访问它使用的方法。

提前致谢。

0 投票
0 回答
937 浏览

java - 操作系统之间的不同java打印实现?

我正在使用以下代码将 RAW 数据(转义码)发送到打印机:

这在 Windows 中正常工作,打印机解释转义码并按我的预期打印。

在 Linux 中(我安装了驱动程序的 CUPS 版本),当我发送原始数据时,它只是打印一个空白页面并报告打印错误。奇怪的是,如果我使用系统lpr命令发送数据,一切正常。

关于可能出错的任何线索?

[注意]随意编辑我的标题,我想不出更好的

[编辑] 这是我得到的错误日志:LOGS

[edit2]我不太喜欢的解决方案的类似线程:Java 中的 Linux 打印

[edit3] 尝试不同的 DocFlavors 我想出了新的错误:

这可能指向 CUPS 配置错误吗?