0

我正在linux中编写一个python程序,其中一部分运行pdftotext可执行文件来转换pdf文本。我目前使用的代码如下。

pdfData = currentPDF.read()

tf = os.tmpfile()
tf.write(pdfData)
tf.seek(0)

out, err = subprocess.Popen(["pdftotext", "-", "-"], stdin = tf, stdout=subprocess.PIPE ).communicate()

这很好用,但现在我想使用 -layout 选项运行 pdftotext 可执行文件(保留文档的布局)。我尝试用布局替换“-”,用“pdftotext -layout”替换“pdftotext”等。它都不起作用。他们都给我一个空文本。由于输入是通过临时文件输入的,因此我无法找出参数列表。Popen 上的大多数文档都假定所有参数都是通过参数列表传入的,但在我的例子中,输入是通过临时文件传入的。

任何帮助将不胜感激。

4

2 回答 2

2

这对我有用:

out, err = subprocess.Popen(
    ["pdftotext", '-layout', "-", "-"], stdin = tf, stdout=subprocess.PIPE ).communicate()

虽然我在手册页中找不到明确的确认,但我相信第一个-告诉pdftotext期望PDF-file来自标准输入,第二个-告诉pdftotext期望text-file被发送到标准输出。

于 2010-10-09T18:25:22.320 回答
0

您可以使用 shell=True 在字符串中传递完整的命令:

out, err = subprocess.Popen('pdftotext -layout - -', shell=True, stdin=tf, stdout=subprocess.PIPE).communicate()
于 2010-10-09T18:11:00.287 回答