问题:应用程序有一个由各种打印机组成的网络。其中一些通过 PrintNode 工作。他们应该接收编码为 base64 的字符串。接收我的文档的代码看起来像
PrintNode::PrintJob.new printer_id, 'PrinterClass', method, Base64.encode64(document), 'AppName'
method
应该包含方法——在我的例子中是 raw_base64 或 pdf_base64。所以我有下一个代码
case FileMagic.mime.buffer(document, true)
when 'text/plain'
then method = 'raw_base64'
# when 'text/html' # this commented because I have to avoid it
# then method = 'pdf_base64'
when 'application/pdf'
then method = 'pdf_base64'
else
raise InvalidDocumentError
end
Controller.render
我用方法渲染文档
document = InstanceController.render :label, { id: instance.id, formats: :pdf, locals: { instance: instance_note } }
正如我所见,文档是一个字符串(包括 html),因此 FileMagic.mime 返回 text/html(我认为是这样)。这是个问题。我不在打印机附近,不能只用真正的打印机进行测试。此外,我们有 5 种打印机类型(条形码、a4 等)。所以我不确定我是否可以使用带注释的方法(text/html
)。
所以主要问题Controller.render
- 我可以用方法渲染真正的 PDF吗?(如果是,那么如何?)
注意:我们使用 PrinceXML 和 gem 王子。因此,当同一个控制器用于通过浏览器返回 PDF 时,我会得到有效的好 PDF。