猿问

使用pypandoc将HTML字符串转换为LaTex

我正在尝试使用pypandoc(Pandoc的python包装器)将HTML字符串转换为LaTex 。


使用pypandoc覆盖文件可以正常工作:


import pypandoc


input = 'SomeFile.html'

output = pypandoc.convert(input, 'tex')

但是,如果我尝试传递一些字符串(如果您定义字符串格式,则根据pypandoc包索引应该是可能的),我得到了IOError: [Errno 63] File name too long::


input = '''HTML-string'''

output = pypandoc.convert(input, 'tex', format='html')

即使我指定了文件,也不知何故format='html'。


我还尝试通过使用StringIO模块来解决此问题,但未成功:


import pypandoc

import StringIO


output = StringIO.StringIO()

output.write('''HTML-string''')

contents = output.getvalue()

output.close()


convertedOutput = pypandoc.convert(contents, 'tex', format='html')

我是python的新手,非常感谢您的帮助或提示。提前致谢!


鸿蒙传说
浏览 402回答 2
2回答

江户川乱折腾

如果有人需要答案,这是一个使用subprocess模块的最小工作示例,该模块从读取输入stdin并在上输出转换后的字符串stdout。# -*- coding: utf8 -*-import subprocessimport osPANDOC_PATH = r"path/to/pandoc"def convert(text_to_convert):    pandoc = subprocess.Popen([os.path.join(PANDOC_PATH, 'pandoc.exe'), '-f', 'html', '-t', 'latex'], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)    output, error = pandoc.communicate(text_to_convert.encode('utf-8'))    converted_output = output    return converted_output.decode()

繁花如伊

如果检查pypandoc源,您会看到它convert只是在pandoc使用正确的输入和输出流的情况下运行进程。pandoc找不到命令时发生错误。可能是您安装了pypandoc并且忘记了pandoc它本身。或者该命令不在您的外壳中PATH。
随时随地看视频慕课网APP

相关分类

Python
我要回答