我可以在内存文件中运行pdflatex吗?

时间:2016-09-12 14:55:24

标签: python pdflatex

我将生成一系列pdf文件,其内容将在Python(2.7)中生成。一个常规的解决方案是将.tex内容保存在某个目录中,在文件上调用pdflatex,之后读入pdf文件,以便最终将文件放在相关位置。如下所示:

import os

texFile = \
"""\\documentclass[11pt,a4paper,final]{article}
\\begin{document}
Hello, world!
\\end{document}
""" # Clearly will a more awesome file be generated here!

with open('hello.tex', 'w') as f:
    f.write(texFile)
os.system('pdflatex hello.tex')
pdfFile = open('hello.pdf', 'rb').read()
# Now place the file somewhere relevant ...

我希望在内存的基础上进行相同的程序,以提高速度并避免文件泄漏到某个文件夹中。所以我的问题是,如何在内存基础上运行pdflatex并将生成的pdf提取回Python?

1 个答案:

答案 0 :(得分:1)

看看tex。它为TeX命令行工具提供了内存API。例如:

>>> from tex import latex2pdf
>>> document = ur"""
... \documentclass{article}
... \begin{document}
... Hello, World!
... \end{document}
... """
>>> pdf = latex2pdf(document)

>>> type(pdf)
<type 'str'>
>>> print "PDF size: %.1f KB" % (len(pdf) / 1024.0)
PDF size: 5.6 KB
>>> pdf[:5]
'%PDF-'
>>> pdf[-6:]
'%%EOF\n'

您只需运行pip install tex即可安装它。另请注意,对于字符串块,您可以简单地添加r以使其成为原始字符串。这样你就不必逃避所有的反斜杠。