CUPS-云打印 CentOS

CUPS-cloud-print CentOS

我正在尝试打印到为 google 云打印帐户共享的打印机。我正在尝试使用 CUPS-Cloud-Print,它允许您将云打印帐户中的打印机添加到本地 CUPS 服务器。这个问题是我的打印出错了。因此,如果有人最近在基于 CentOS/RedHat 的系统上使用过 CUPS-Cloud-Print 并使其正常工作,那也会有所帮助。

根据我在这个项目上发布的 issue,我可以将文档保存到 google 驱动器,只是无法打印。所以我知道身份验证正在工作。我还可以通过各种浏览器(甚至是有问题的 CentOS 机器上的浏览器)打印到同一台打印机,所以问题不在于打印机或打印机的网络,也不在于打印机在 Google Cloud Print 中的设置。也许有一种方法可以启用更详细的日志记录来找出真正的问题(比如它可能无法将其转换为 PDF)。我得到的错误是 "Error response from Cloud Print for type pdf: Failed to parse the print job's print ticket."

更多信息:我使用我的 cups 日志中的同一张票进入了模拟页面 here(见下文)。这个模拟页面需要一个 PDF(CUPS-Cloud-Print 帮我转换),所以我提供了一个真实的 PDF。第一次,我用下面的票试了一下,得到了 CUPS-Cloud-Print 得到的同样的错误。第二次,我把票原封不动地留在模拟器里,打印的很好

无论我使用 CUPS-Cloud-Print 还是模拟工具,Cloud Print 似乎有问题的来自 CUPS 日志的票证:

{"print": {"color": {"type": "STANDARD_COLOR"}, "margins": {"type": "STANDARD"}, "dpi": {"vendor_id": "epns200:Level2", "vertical_dpi": 360, "horizontal_dpi": 360}}, "version": "1.0"}

从模拟器收集到的更多信息:

这张票有效:

{
    "print":
    {
        "color":
        {
            "type": "STANDARD_COLOR"
        },
        "dpi":
        {
            "vendor_id": "epns200:Level2",
            "vertical_dpi": 360,
            "horizontal_dpi": 360
        }
    },
    "version": "1.0"
}

并且这张票无效:

{
    "print":
    {
        "color":
        {
            "type": "STANDARD_COLOR"
        },
        "margins":
        {
            "type": "STANDARD"
        }
    },
    "version": "1.0"
}

看来边距有问题,但我看不出有什么问题。但是当我将它与 Google 文档 here 进行比较时,我没有发现任何问题。有什么想法吗?

原来issue #114解决了我的问题。基本上,我必须从

更改 /usr/share/cloudprint-cups/printer.py 方法 _getCapabilities
    return self._getCapabilitiesDict(attrArray,
                                     self['capabilities']['printer'],
                                     overridecapabilities)

        # HACK HERE
        #return self._getCapabilitiesDict(attrArray,
        result = self._getCapabilitiesDict(attrArray,
                                 self['capabilities']['printer'],
                                 overridecapabilities)
        result['print'].pop('margins', None)
        #result['print']['duplex']['type'] = 'LONG_EDGE'
        return result

对我来说关键是 removing/popping Google 打印票的边距,因为这是导致 Google 拒绝 Google 打印票的原因。无论出于何种原因,双工线路导致某些东西崩溃,这就是它被注释掉的原因。