Mik*_*sta 1 pdf grep pdftotext
我已经按照这个主题的想法,但它不起作用. https://unix.stackexchange.com/questions/6704/how-can-i-grep-in-pdf-files
pdftotext PercivalWalden.pdf - | grep 'Slepian'
pdftotext PercivalWalden.pdf - | grep 'Naive'
pdftotext PercivalWalden.pdf - | grep 'Filter'
Run Code Online (Sandbox Code Playgroud)
我确信"过滤器"在本书中至少出现了100次.
有任何想法吗?
如果你真的可以从PDF中获取一个给定的字符串(你可以'看到'并在渲染或打印的PDF页面上阅读),即使有了帮助pdftotext,那么你一定非常幸运.
首先:您提供的链接中的大部分建议unix.stackexchange.com都是非常不明确的(最礼貌地说).那里的大部分答案都是由那些不熟悉大量PDF变体的人写的.
在您的情况下,您尝试在pdftotext第一个帮助下转换文件,将输出流式传输到stdout.
有许多类型的PDF pdftotext根本无法提取文本.原因可能是(以下列表未完成):
您看到的"文本"不是基于使用字体.它可能是由扫描或其他生产过程生成的一个大光栅图像,然后嵌入到PDF文件shell中.这可能使页面只显示为文本字符串.
您看到的"文本"不是基于使用字体.它可能是一系列小的矢量图(或小光栅图像),只看起来像我们的眼睛和大脑的文本字符串.
有许多软件应用程序,它们将字体转换为所谓的"轮廓".这种看似奇怪的行为的原因可能是:
该字体作为PDF文件中的子集嵌入(通过PDF生成软件 - 用户通常无法控制此操作的详细信息)并使用"自定义"编码,但该文件不提供toUnicode表格将字形映射到字符.
'Glyphs'是屏幕上绘制的每种字体中明确定义的形状.字形映射到计算机的字符 - 我们的眼睛只看到这些形状,我们的大脑将这些形状转换为字符而不需要toUnicode桌子.像pdftotext需要一个toUnicode表来反转字形转换回字符的程序.
您可以使用命名行命令实用程序pdffonts来初步了解PDF文件使用的字体.示例输出:
pdffonts paper-projectiris---final.pdf
name type encoding emb sub uni object ID
-------------------------- ------------ -------------- --- --- --- ---------
TCQJEF+CMCSC10 Type 1 Builtin yes yes no 96 0
VPAFLY+CMBX12 Type 1 Builtin yes yes no 97 0
CWAIXW+CMTI12 Type 1 Builtin yes yes no 98 0
OBMDLT+CMR12 Type 1 Builtin yes yes no 99 0
Run Code Online (Sandbox Code Playgroud)
在这种情况下,文本提取(以及对字符串进行grepping的方法)应该有效:
uni(告诉toUnicode地图是否嵌入PDF文件中)no的encoding列说明了每种单一字体,但该列不包含custom,但是builtin(意味着字体文件提供了字形 - >字符映射,这是类型Type 1.总结一下:如果不访问PDF文件,就无法说出为什么你不能"寻找"你正在寻找的字符串!
| 归档时间: |
|
| 查看次数: |
149 次 |
| 最近记录: |