如何在使用Python运行它时停止wkhtmltopdf.exe弹出窗口

时间:2015-04-15 18:39:19

标签: python-3.x wkhtmltopdf

我正在使用wkhtmltopdf.exe将html转换为使用python的pdf。 wkhtmltopdf.exe的弹出窗口使我在运行它时很难处理任何其他事情。我必须转换大约200K +文件,并且必须同时处理其他事情。但它真的不让我在其他任何事情上工作。

有没有办法在后台停止或运行它? 我非常感谢你的帮助。

PS。对不起,我是新手,不知道有什么其他方法可以阻止它。

我正在使用wkhtmltox-0.12.2.2_msvc2013-win64软件

2 个答案:

答案 0 :(得分:0)

  1. 使用pythonw.exe启动您的脚本(适用于.py.pyw扩展程序)
  2. 或使用.pyw扩展名为您的脚本(适用于python.exepythonw.exe
  3. 在第二种情况下,确保.pyw扩展程序由pythonw.exe处理(右键单击.pyw脚本> Open With并确保pythonw.exe是默认值.pyw文件的处理程序。)

    修改

    如果使用CREATE_NO_WINDOW启动可执行文件,也可以将creationflags标记传递给subprocess.Popen参数。此标志是一个可以传递给Win32 CreateProcess API的标志,并且是documented here

    这是一个不在我的计算机上创建任何控制台的示例(请务必使用.pyw扩展名命名):

    #!/usr/local/bin/python3
    # -*- coding: utf8 -*-
    import subprocess
    import urllib.parse as urlparse # import urlparse for python 2.x
    
    CREATE_NO_WINDOW = 0x08000000 # do not create a new window !
    
    def is_url(url):
        parts = urlparse.urlsplit(url)  
        return parts.scheme and parts.netloc
    
    def main(url, output):
        print(url, output)
        if not is_url(url):
            return -1
    
        proc = subprocess.Popen(["wkhtmltopdf.exe", url, output],
            creationflags=CREATE_NO_WINDOW)
    
        proc.wait()
        return proc.returncode
    
    
    if __name__ == "__main__":
        url = "https://www.example.com"
        output = r"c:\tmp\example.pdf"
    
        rval = main(url, output)
    
        sys.exit(rval)
    

答案 1 :(得分:0)

所以我解决了这个问题!使用py2exe使我的python文件可执行并使用.py文件。

http://www.py2exe.org/index.cgi/Tutorial

不再弹出命令提示符窗口。