0

我正在使用 Pastebin 来存储我的 python 程序的代码,以使其在多台计算机上保持更新。我现在正在尝试类似地维护更新的帮助窗口。我看到我可以使用 .chm 文件将完整的帮助对话框保存在单个文件中,但是这些文件不能很好地转换为文本。

我使用了来自Microsoft的示例 .chm 文件,我用记事本打开了文件(“Viewhlp.chm”)并将文本复制到Pastebin,然后使用下面的脚本尝试重新创建 .chm 文件。这不起作用。直接打开时它会给出“无法打开文件”消息,并且在 PyWin32 中会被忽略。是否有另一种可以使用 python 加载的帮助对话框的单一文件格式?

import urllib2, sys

helpUrl = "http://pastebin.com/raw.php?i=a8rF2i8a"
originalPath = "Viewhlp.chm"
newPath = "NewHlp.chm"

try:
    helpData = urllib2.urlopen(helpUrl)
except urllib2.URLError:
    sys.exit()

currentHelp = helpData.read()
with open(newPath, mode="wb") as helpFile:
    helpFile.write(currentHelp)

# briefly display using PyWin32 or just open the chm files directly
import win32help
win32help.HtmlHelp(0, None, win32help.HH_INITIALIZE, None)
link = win32help.HH_AKLINK()
link.indexOnFail = 1
link.url = ""
link.msgText = ""
link.msgTitle = ""
link.window = ""
win32help.HtmlHelp(0, originalPath, win32help.HH_KEYWORD_LOOKUP, link)
win32help.HtmlHelp(0, newPath, win32help.HH_KEYWORD_LOOKUP, link)
4

2 回答 2

1

记事本无法正确显示非打印字符。可能最简单的做法是对 .chm 进行 base64 编码,然后在记事本中打开编码版本,然后再将其复制到 pastebin。然后在阅读时取消编码:

currentHelp = base64.b64decode(helpData.read())
于 2013-10-11T20:39:50.377 回答
0

我像这样转换东西/文档的一种方法是在我的 Windows 系统上安装“通用/纯文本”打印机,然后选择它并在我尝试打印时出现的打印对话框中选择“打印到文件”选项从相关的应用程序。

这将生成一个纯文本文件,其中包含本应打印的内容。尽管我从未尝试过,但可能有某种方法可以使其自动化。

于 2013-10-11T21:37:56.697 回答