c – Qt:打印原始文本
作者:互联网
我需要在Qt应用程序中将ZPL脚本输出到Zebra打印机.
打印机位于客户端计算机中配置为原始打印机的smb共享网络上.
如果我从C测试程序中调用cupsPrintFile(“printer_name”,“./ tmp_print_file.zpl”,“”,0,NULL),一切都会好起来的.
如果我使用QTextDocument :: print()使用“./tmp_print_file.zpl”中的相同文本作为文档,则不会打印任何内容.
我嗅到网络,发现发送到打印机服务器的数据不是原始数据,但是,后记!
有没有办法将数据发送到打印机而不进行任何修改?
>让我明确一点,我不想渲染文本,只是将准备打印的标签脚本直接发送到了解ZPL协议的打印机.
谢谢大家.
编辑:
正如@Martin所说,我试过:
printer.setOutputFormat( QPrinter::NativeFormat );
QTextDocument *doc = new QTextDocument( QString( label ), this );
doc->print( &printer );
但它不起作用.
解决方法:
你能完全按照你在测试程序中所做的那样做:
>创建一个临时文件(QTemporaryFile).
>将内容发送到文件.
>调用cupsPrintFile方法.
或者,CUPS API可能有一种绕过临时文件的方法.免责声明:我对CUPS API完全没有经验;这只是粗略地看一些在线文档.看起来可能是以下顺序:
> cupsCreateJob> cupsStartDocument> cupsWriteRequestData> cupsFinishDocument
如果可行,您只需要将QString转换为正确的字节编码.
标签:zebra-printers,c,linux,printing,qt 来源: https://codeday.me/bug/20190903/1798091.html