0

这个应该很简单,但对于我的生活,我无法弄清楚如何让它运行。我想要做的是从文件夹中读取文件并将它们发送到打印机。

因此,我查看了 Camel 中打印机组件的文档,看起来很简单。

我制作了以下 DSL 路由:

  <camelContext trace="false" id="blueprintContext" xmlns="http://camel.apache.org/schema/blueprint">
  <route id="printSpoolRoute">
    <from uri="file:d:/printspool?delay=1000&amp;move=.done/printed/${date:now:yyyyMMdd}/${file:onlyname.noext}_DONE_${date:now:yyyyMMddHHmmss}.${file:name.ext}&amp;readLock=changed&quot;"/>
    <to uri="lpr:localhost/default?flavor=DocFlavor.INPUT_STREAM&amp;mimeType=AUTOSENSE&amp;mediaSize=iso-a4"/>
  </route>
</camelContext>

当我启动它时,我得到以下异常:

[ Blueprint Extender: 1] BlueprintCamelContext ERROR Error occurred during starting Camel: CamelContext(blueprintContext) due Failed to create Producer for endpoint: Endpoint[lpr://localhost/default?flavor=DocFlavor.INPUT_STREAM&mediaSize=iso-a4&mimeType=AUTOSENSE]. Reason: java.lang.NullPointerException org.apache.camel.FailedToCreateProducerException: Failed to create Producer for endpoint: Endpoint[lpr://localhost/default?flavor=DocFlavor.INPUT_STREAM&mediaSize=iso-a4&mimeType=AUTOSENSE]. Reason: java.lang.NullPointerException

如果异常有更多详细信息,我可能会寻找一些东西,所以我怀疑我在印刷生产商的 URI 中犯了一个错误。

在查看打印机生产商的 URI 时,我只想检查在使用网络打印机时我对 URI 的理解是否正确。

假设我想在连接到名为 HP LaserJet 4104 的名为 SRV-07 的服务器的网络打印机上生成文档,以下 URI 是否正确:

<to uri="lpr:SRV-07/HP LaserJet 4104?flavor=DocFlavor.INPUT_STREAM&amp;mimeType=AUTOSENSE&amp;mediaSize=iso-a4"/>

我担心名称中的破折号和空格,以前使用过此组件的人可能会在这里有所启发。

4

1 回答 1

1

把这个留在这里以供参考。

答案是mediaSize必须根据链接中找到的文档指定参数。我有参数iso-a4而不是ISO_A4. 也许骆驼开发人员可以在这里给出更具描述性的例外。

此外,关于网络打印机的 URI 的问题也确实如我所指定的那样工作。

于 2013-09-13T01:20:23.513 回答