2013-06-10 3 views
2

pypandoc (Pandoc의 파이썬 래퍼)을 사용하여 HTML 문자열을 LaTex로 변환하려고합니다.pypandoc을 사용하여 HTML 문자열을 LaTex로 변환

Coverting 파일 pypandoc를 사용하여 잘 작동 :

import pypandoc 

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

하지만 (당신이 문자열 형식을 정의하는 경우 pypandoc 패키지 인덱스에 따라 가능해야한다) 몇 가지 문자열을 전달하려고하면 내가 IOError: [Errno 63] File name too long:를 얻을 : 내가 format='html'를 지정하면

input = '''HTML-string''' 
output = pypandoc.convert(input, 'tex', 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') 

내가 파이썬에 새로운 오전 일부 도움이나 힌트를 정말 감사하겠습니다. 미리 감사드립니다!

+0

'pypandoc'의 어떤 버전을 사용하십니까? –

+0

pypandoc-0.5.1.2 – Aik

+0

안녕하세요, 문제를 해결할 수 있었습니까? –

답변

0

pypandoc 소스를 확인하면 convert은 적절한 입력 및 출력 스트림을 사용하여 pandoc 프로세스 만 실행합니다.

pandoc 명령을 찾을 수 없을 때 오류가 발생합니다. 아마도 pypandoc을 설치했고 pandoc에 대해 잊어 버렸을 것입니다. 또는 명령이 쉘 외부에 있습니다. PATH.

+0

Pandoc이 설치되었습니다. 내가 쓴 것처럼, 문자열을 전달하려고하면 문제가 발생합니다. 파일 변환이 잘 작동합니다 ... – Aik

0

답변이 필요한 경우에는 subprocess 모듈을 사용하고 stdin에서 입력을 읽고 stdout에 변환 된 문자열을 출력하는 최소한의 작업 표기 예입니다.

# -*- 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() 
관련 문제