2

我正在尝试使用pypandocPandoc的 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 新手,非常感谢一些帮助或提示。提前致谢!

4

2 回答 2

0

如果您检查pypandoc源,您会发现它只是使用正确的输入和输出流convert运行进程。pandoc

pandoc找不到命令时会发生错误。可能您安装pypandoc并忘记了pandoc自己。或者命令不在你的 shellPATH中。

于 2013-06-11T15:19:27.047 回答
0

如果有人需要答案,这里是一个最小的工作示例,使用subprocess模块并stdinstdout.

# -*- coding: utf8 -*-

import subprocess
import os

PANDOC_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()
于 2014-12-30T22:39:22.020 回答