此问题适用于我正在编写的与此问题相关的代码。我现在已经能够按照我想要的方式创建 pdf 文件了。然而,当我尝试打印它时,我遇到了问题。这是相关代码(Ubuntu 22.04,python 3.10)
with open(examfile, "wb") as fp:
writer.write(fp)
conn.printFile(results.printer, examfile, " ", {"Staple","1"})
# os.system("lp -d " + results.printer + " -o Staple=1 " + examfile)
# subprocess.run(["lp","-d",results.printer,"-o","Staple=1",examfile],capture_output=True)
results.printer 和 examfile 分别是带有打印机名称和文件名称的字符串。 当代码运行时,文件被正确创建,上面的代码将其发送到打印机,但它在打印机队列中显示为“已停止”。如果我在终端中手动运行命令,它会将文件发送到打印机并打印它。
正如你可以看到最后的评论,我尝试使用 subprocess.run,我也尝试了 os.system。在阅读了一些有关堆栈溢出的文章后,我尝试了 pycups。他们都表现出相同的行为。文件显示在打印队列中并停止。我似乎无法让他们从那里释放。我可以创建所有文件,然后从命令行将它们单独发送到打印机,但我可能会处理数百个文件,我宁愿从 python 打印它们。它还可能会增加我的存储需求,超出我的预期。我本来计划打印然后在打印后删除每个文件。
我认为这可能是我的机器上的某种设置问题,但由于 lp 命令在命令行上工作,我不知道问题是什么。
像往常一样,可能有一些简单的事情我没有考虑。如果您能让我知道它是什么,我将不胜感激。谢谢,
.write
已缓冲。 fp.flush()
在期望文件包含内容之前。使用时常见的错误tempfile.NamedTemporaryFile
。