将PDF文件的内容输出到命令行

18

我正在寻找一个命令行程序,可以像文本文件的cat命令一样打印出PDF文件的文本内容。

我已经找到了pdftotxt,它可以工作,但我更喜欢复制cat的功能,因为我想使用grep进行管道操作。谢谢!


2
虽然它看起来并不是解决这个问题的方案,但任何有兴趣从命令行与PDF文件交互的人都应该知道pdftk。(而且你可以查看data_dump命令,看看是否可以从中获取到有用的信息...) - dmckee --- ex-moderator kitten
相关:PDF转文本转换器 - kenorb
请注意,@dmckee---ex-moderatorkitten提到的pdftk dump_data并不会将PDF内容转换为文本,它只是将PDF的元数据转储到一个文本文件中。 - Dennis
2个回答

43

pdftotext 的 man 页面中,我找到了以下内容:

pdftotext [选项] [PDF-文件 [文本文件]]

描述 Pdftotext 可将便携式文档格式(PDF)文件转换为纯文本。

Pdftotext 读取 PDF 文件 PDF-文件,并将文本写入文本文件 text-file。如果未指定文本文件,则 pdftotext 将 file.pdf 转换为 file.txt。如果文本文件是“-”,则文本被发送到 stdout。

因此,要输出到 stdout 并使用管道传递给 grep,请使用以下命令:

pdftotext mydoc.pdf - | grep mysearchterm

1
似乎带有xpdf(这一事实在尝试确定要安装哪个软件包时可能会有用...) - dmckee --- ex-moderator kitten
Linux安装:sudo apt-get install poppler-utils,OSX安装:brew install poppler - kenorb

2
也许你可以尝试这个: https://github.com/luochen1990/nodejs-easy-pdf-parser
这是一个npm包,需要安装nodejs(和npm)才能使用。
它可以作为命令行工具使用:
npm install -g easy-pdf-parser
pdf2text test.pdf > test.txt

这个工具将根据文本行的纵坐标进行排序,因此在大多数情况下都能很好地发挥作用。它还可以与Unicode和跨平台良好地配合使用(相比之下,mingw64的pdftotext在Windows上会丢失Unicode字符)。

1
我尝试在第一个PDF上运行时出现了错误:(node:3972) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'Pages' of undefined - masterxilo
@masterxilo也许这取决于PDF文件的内容,请您提交一个包含问题的PDF文件的问题报告,好吗? - luochen1990
https://github.com/luochen1990/nodejs-easy-pdf-parser/issues/1 - masterxilo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接