2

当我发送没有功能的打印机作业时,它的工作和打印:

<?php
$url = "http://www.google.com/cloudprint/submit?printerid=" . $printer_id . &output=json";
        $post = array(
            "printerid" => $printer_id,
            "capabilities" => '',
            "contentType" => "text/plain",
            "title" => $title,
            "content" => $docBytes
        );
        $post = http_build_query($post);
        $ret = $this->processRequest($url, $post, "");
?>

但现在我需要以 A7 格式的字母打印信息。所以我用一些功能编写了这段代码:

<?php
 $url = "http://www.google.com/cloudprint/submit?printerid=" . $printer_id . "&output=json";
        $post = array(
            "printerid" => $printer_id,
            "capabilities" => array('psk:MediaSizeWidth' => '74000', 'psk:MediaSizeHeight' => '104700'), 
            "contentType" => "text/plain",
            "title" => $title,
            "content" => $docBytes
        );

        $post = http_build_query($post);
        $ret = $this->processRequest($url, $post, "");
?>

而且它不想打印。只是错误。也许有人知道如何正确地做到这一点?

4

2 回答 2

7

我目前正在使用云打印为 Web 应用程序实现无人值守打印,这是漫长的一天!

从谷歌对话框(https://www.google.com/cloudprint/gadget.html)打印时一切正常,但是通过我的 API 发送文件把一切都搞砸了(在热敏打印机上打印餐厅门票,最终得到 50 厘米上边距)

在网上到处查看后,我意识到 google print gadget 是纯 html,使得提交请求非常容易捕获。只需启动您的开发人员工具,从对话框中打印一些内容,然后检查发布数据的“功能”值。

令人困惑的部分是这些设置需要采用类似 PPD 的格式,而不仅仅是普通的关联数组。

您可以使用正确的设置从所需的打印机进行打印,然后按照您的 API/其他内容复制“功能”部分。例如,这是我的:

{"capabilities":[{"name":"TmtPaperSource","type":"Feature","options":[{"ppd:value":"\"\"","name":"PageFeedCut","displayName":"Page [Feed, Cut]"}]},{"name":"TmtPaperReduction","type":"Feature","options":[{"ppd:value":"\"\"","name":"Both","displayName":"Top & Bottom margins"}]}]}

并格式化:

{
    "capabilities":[
        {
            "name":"TmtPaperSource",
            "type":"Feature",
            "options":[{
                "ppd:value":"\"\"",
                "name":"PageFeedCut",
                "displayName":"Page [Feed, Cut]"
            }]
        },
        {
            "name":"TmtPaperReduction",
            "type":"Feature",
            "options":[{
                "ppd:value":"\"\"",
                "name":"Both",
                "displayName":"Top & Bottom margins"
            }]
        }
    ]
}

最后一点:您需要将整个事情作为“功能”参数传递,这意味着您的请求类似于.../submit?capabilities={capabilities:[...]},也非常令人困惑!

于 2013-02-15T20:02:35.007 回答
0

在我发现的 GCP 文档中,该功能(打印格式、副本计数等)仅支持 Google Cloud Ready 打印机!

目前我发现只有一种方法可以做到这一点:只需立即在打印机的操作系统驱动程序中配置设置以在 A7 中打印,它将始终在 A7 中打印

于 2012-10-09T08:23:29.243 回答