我正在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上的大多数文档都假定所有参数都通过参数列表传递,但是在我的情况下,输入正在通过临时文件传递。

任何帮助将不胜感激。

有帮助吗?

解决方案

这对我有用:

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

尽管我在人页页面上找不到明确的确认,但我相信第一个 - 告诉 pdftotext 期待 PDF-file 来自stdin,第二 - 告诉 pdftotext 期待 text-file 发送到Stdout。

其他提示

您可以通过shell = true传递字符串中的完整命令:

out, err = subprocess.Popen('pdftotext -layout - -', shell=True, stdin=tf, stdout=subprocess.PIPE).communicate()
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top