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

How to stop wkhtmltopdf.exe pop-up while running it with Python

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

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

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

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

  1. 使用 pythonw.exe 启动您的脚本(适用于 .py.pyw 扩展)
  2. 或为您的脚本使用 .pyw 扩展名(适用于 python.exepythonw.exe

在第二种情况下,确保 .pyw 扩展由 pythonw.exe 处理(右键单击您的 .pyw 脚本 > Open With 并确保 pythonw.exe.pyw 个文件的默认处理程序。

编辑

如果您使用 subprocess.Popen 启动可执行文件,您还可以将 CREATE_NO_WINDOW 标志传递给 creationflags 参数。这个标志是可以传递给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)

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

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

不再弹出命令提示符 window。