我正在使用GhostPDL pcl6应用程序将文本文件打印到PDF。文本文件包含从连接到PLC控制器的串行端口捕获的文本。某些打印数据来自较旧的系统,该系统仅使用换行LF来终止行终止,并且不提供CR回车字符。结果是PDF打印有“阶梯步进”问题。可以将激光打印机设置为AUTO CR以使打印件正常打印。但是,我找不到在pcl6 print命令中设置-sDEVICE = pdfwrite设置以添加自动CR的解决方案。
我的串行捕获程序基于pySerial tcp_serial_redirect.py的修改版本。
https://github.com/jaredly/pydbgp/blob/master/symbian/serial_tcp_redirect.py
这在Raspberry Pi上用作可编程设备服务器。串行打印转发到以太网打印机端口9100.
除了其他功能外,为了将串行数据捕获到文本文件,我在程序中添加了一个write to file命令:
if data:
logfile = open("/var/www/active_log.txt","a")
logfile.write(data)
logfile.close()
问题是文本文件没有所需的CR字符。 Windows中的Python程序创建一个文本文件,并将LF转换为LF / CR,但不转换为Raspberry Pi。
我的解决方案是在最初的pyserial计划中找到的:
http://sourceforge.net/p/pyserial/code/HEAD/tree/trunk/pyserial/examples/tcp_serial_redirect.py
我简化了连接和拆分公式。
if data:
data = '\r\n'.join(data.split('\n'))
logfile = open("/var/www/active_log.txt","a")
logfile.write(data)
logfile.close()
在寻找解决方案数小时后,这个似乎是最简单的。我试过stty设置和其他途径。也许这可能有助于某人或者可能有更好的解决方案?
答案 0 :(得分:0)
据我了解,您正尝试将所有\n
替换为\r\n
。这样的事怎么样?
data = data.replace('\n', '\r\n')
希望这有帮助。