如何使用grep搜索我的PDF?
我遵循了这条线索的想法,但它不起作用。 我确信“过滤器”在这本书中至少出现了100次 有什么想法吗?如果你真的能从PDF中复制一个给定的字符串(你可以在呈现或打印的PDF页面上“看到”并阅读),即使在如何使用grep搜索我的PDF?,pdf,grep,pdftotext,Pdf,Grep,Pdftotext,我遵循了这条线索的想法,但它不起作用。 我确信“过滤器”在这本书中至少出现了100次 有什么想法吗?如果你真的能从PDF中复制一个给定的字符串(你可以在呈现或打印的PDF页面上“看到”并阅读),即使在pdftotext的帮助下,那么你一定非常幸运 首先:从您提供给unix.stackexchange.com的链接中得到的大多数建议都是非常无知的(礼貌地说)。那里的大多数答案都是由那些不熟悉大量PDF变体的人写的 在本例中,您首先尝试在pdftotext的帮助下转换文件,将输出流式传输到stdo
pdftotext
的帮助下,那么你一定非常幸运
首先:从您提供给unix.stackexchange.com
的链接中得到的大多数建议都是非常无知的(礼貌地说)。那里的大多数答案都是由那些不熟悉大量PDF变体的人写的
在本例中,您首先尝试在pdftotext
的帮助下转换文件,将输出流式传输到stdout
有许多类型的PDF,pdftotext
根本无法提取文本。原因可能是(以下列表不完整):
- 避免许可问题(当某个字体不允许嵌入时)
- 在试图提取文本时设置障碍
- PDF生成应用程序中的意外错误设置。
toUnicode
表
“Glyphs”是在屏幕上绘制的每个字体中定义良好的形状。字形映射到计算机中的字符——我们的眼睛只看到这些形状,我们的大脑将它们转换为字符,而不需要toUnicode
表格。像pdftotext
这样的程序需要toUnicode
表来将字形翻译回字符您可以使用名为
pdffonts
的命令行实用程序来初步了解PDF文件使用的字体示例输出:
在这种情况下,文本提取(以及对字符串进行灰显的方法)应该可以工作:
- 即使名为
的列(说明PDF文件中是否嵌入了uni
映射) 表示toUnicode
对于每种字体,否
列不包含编码
,而是自定义
(这意味着字体文件提供了字形->字符映射,类型为内置的
)类型1
总而言之:如果您不能访问您的PDF文件,就不可能知道您为什么不能“grep”您正在寻找的字符串!如果您真的可以grep给定的字符串(您可以在呈现或打印的PDF页面上“看到”和阅读)从PDF来看,即使有
pdftotext
的帮助,你也一定非常幸运
首先:您提供给unix.stackexchange.com的链接中的大多数建议都是非常无知的(礼貌地说)。那里的大多数答案显然是由不熟悉大量PDF变体的人写的
在本例中,您首先尝试在pdftotext
的帮助下转换文件,将输出流式传输到stdout
有许多类型的PDF,pdftotext
根本无法提取文本。原因可能是(下面的列表不完整):
- 避免许可问题(当某个字体不允许嵌入时)
- 在试图提取文本时设置障碍
- PDF生成应用程序中的意外错误设置。
toUnicode
表
“字形”是在屏幕上绘制的每个字体中定义良好的形状。字形映射到计算机的字符——我们的眼睛只看到这些形状,我们的大脑将它们转换为字符,而不需要toUnicode
表格。像pdftotext
这样的程序需要toUnicode
表格来反转g的翻译莱弗斯回到了角色您可以使用名为
pdffonts
的命令行实用程序来初步了解PDF文件使用的字体。示例输出:
在这种情况下,文本提取(以及对字符串进行灰显的方法)应该可以工作:
- 即使名为
的列(说明PDF文件中是否嵌入了uni
映射) 对于每个字体,toUnicode
列显示encoding
no
pdftotext PercivalWalden.pdf - | grep 'Slepian' pdftotext PercivalWalden.pdf - | grep 'Naive' pdftotext PercivalWalden.pdf - | grep 'Filter'
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