GhostScript:ps2pdf转换PS为PDF后文件空白问题求助
问题解决:tkinter生成的PS转PDF空白
错误原因
你的代码存在两个关键问题:
- 文件名不匹配:保存的PostScript文件是
rectangle.ps,但转换PDF时指定的输入文件是post_script.ps,ps2pdf找不到有效源文件,生成空白PDF。 - 画布渲染不彻底:注释了
root.mainloop(),画布元素可能还没完成渲染就执行了保存操作,导致PS文件内容异常。
修正代码
import tkinter as tk import subprocess root = tk.Tk() canvas = tk.Canvas(root, width=200, height=100) canvas.pack() # 创建图形元素 canvas.create_rectangle(25, 25, 150, 75, fill="blue") canvas.create_text(62, 50, text="Python", fill="white") # 强制更新画布,确保元素渲染完成 canvas.update() # 保存PS文件 canvas.postscript(file="rectangle.ps", colormode='color') # 销毁窗口,无需运行完整主循环 root.destroy() # 执行PS转PDF,使用正确的文件名 process = subprocess.Popen(["ps2pdf", "rectangle.ps", "result.pdf"], shell=True) process.wait() # 等待转换完成
额外说明
canvas.update()会强制tkinter完成当前所有渲染任务,保证PS文件包含完整的画布内容。process.wait()确保转换进程结束后再退出程序,避免因程序提前终止导致转换失败。
内容的提问来源于stack exchange,提问作者Diogo Barros
相关产品推荐
相关产品推荐

