为什么“猫”无法读取 pdf 文件的内容?

Mr.*_*nge 1 command-line pdf file-format cat

当尝试该命令时,cat < 1.pdf它打印了一个非常大的输出,这对我来说是完全无法理解的。的内容1.pdfabc

输出是这样的:

ÀýÓëöûcÎ=ÉÐÎTaüÍ8]ö¹mg:=Rú*@H1S¢?ùá½~Ì8u_4,¬7ïy­t#¯ÚZ|åôÛ~«Æ    fM²JKÁNÿ6 ì©ìÞ¾?bT
¦åÊmBíöÖ¡÷ÄïÝM{Í1¹@;ÄqÄú             t]È7DJ   Êûc0£jÜÖã­\0O8À±(2)èJR'Ø÷=~ÝÆÂµ¡´ oÇKÈ]¹ÞÜY)ÚwÒ?[4ò©Ió¦>G)î¾J&d}ýíÜÅÓò~Ø0 $´Në¿´Èc®pVqí+ëCppG¾ùóßeõõ6GÌ,öfú8Ô7»S[¢S50c­q/_9¹jó¿·Ü%×­tQSßî?LðbkÂÒxâ£Ö?üVAûÇamÏ·Â׫H´+ÆWíç´upèó`I]± ÎëÚwiòtçúwAhO¼²´'Æ©ëÀ0lô?¿ÌIò?ìXË<»ÅUepçæå¥
SïÒFҽϷº®Ën.Z×´\£ÁEH@®2ÊçC¢n½¡hÑâ>º´¢YÚXEfg    sôë¥*|zº7>ù!I©Åÿ«;        ;&==
)dS/),÷È´:ÞõH:CÉÑÀiTÌw!u@Âp2÷AÒfµòÜtFIZ^iÿà£ùÖ5ÐsDiërÿ$0b6Ëü~xÏ·._ÏÒõÜr²`wYù;¤²å»äE3óù²ëvÇ»Ó'ãµ~?ÿîMZÍPkh{aÙ1y&tüÙòÕMoó¬²<ñ/ÇÖa?üʯuÝÓjû,¨Üå@/GMa-èGkD}¤ð©fZbYÑlt/      ±Øj¦èRhCå1âÆñ±S@ÖòÁ~e}
>NÀ^²Jà-Û[Mø¡FËB7ÉVy0|ôÉÏjx[ÙÁnneê)wã+ök'R6"dÞqît¿ý,ߢ]MöV>»Ñ@ÞwM0®èçã^F`çFÕ²æL((¬±S¢ÅïÂy§púÓ­Ë5y1pÆ{uxëÈOþ'¾7+Öº!í
uV-R²f*`æ\ías\Øl^÷ ÿ`r1|yÅ-Y­Ø,º·¢?ÀPæá¸EW0d¤q]&ÿdV6ß.cùÂ~´óðCß?(¨îMëb#òEnÑ»PÅV½!ÀÈѵ                              c´è
jFÇé¨J$ǵÀcu?4·[ö&å:1&OÓö(øyKxòëÑq¸çÎÇÈI#5¨çû,'µÐûfG¸Í§³UÚëÎCDøõe²Ñú$Á½é½Ocø»Éßs! ÀõE²©)8½îv¿<Üî|è¶»B?ÿYw¹·ÌÞÆ¶âôIÇ.>¾H¡n¬Éüׯ*m«¶£L£#7È?¾sÊNoXµ·àMÚ
?ó´ZìâþÌçùä½ÿ$qÀÊcOºùdewænår?ÖB½dfÕ;­t4Êe3#ÄúÀ£çP=¨QÌ?ÕþºÑ\U¼Fµ»â¯/!NZ=>½éú©,EÉ|ªQafu,5Ý%Xw%seàØÇÇTª    BZëCaßî;zÃ"Bma¤ y=ÞwÁű~ÿõåEyV/Ò%q¥Ì^Ç  2U¸âQ³1y(¾&¨òYùÆ«}üx#Á®úÅÿÆðö.i8
              ïþ¨è|Âý6\ U+ᬮ[®eVéüvíÜ{ÈL+]¬)ùxþecäæº°ÿoö?,Ä:¯Oò9T:1G4qÞ.ÌtÉÑëEæáHÔ׬¡ª                                                                                         çc^
nÍPÑU7/ÄñcªXâ§nc]¾¨XPayÚGºxª.wÈç¤}¬ÓÏÇ\rf`¤ñ@zJnî´a'¾¨s­NÔAëG½PL6ºIQkíJÍçØ¼ÔKýF¾)$\&§^»                                                                                            Eý¨_{tÂp¥ñT`mùPvcìÃç1ÿûKáz¹â®ò÷pר?äIIö 6²¬QªMÚIµÈTã+¤i1âN¾8ɽNww²Îf¹¿kVr²ù½Ä¼Ìå±"ªúº+äÿ¥
óv¡t5!(«:Ö+Ovl<¦aö6Kì»â2óÎ娨|üËàÇÒ.j§·¸[ãæ¿ï`¡÷¥¾©,ÝßiÝPMåoÑéïToãw¿dyçëÀã·ó6ês\ÔR;ÕXÚ»ûÿõå?öÁ?¡\Ðs·~=ðÈTDÝCCijÚ`¹ÎÔ¬\·ðñ_ÿü§¯$Âõj®Û¢_]Lù¦8áÌæ²»BJÖÛn¼ûXÏjY8Ò6éØí©YóZtÛt´ÌníUè¨PGØÊzý+ÚT¦M1¥e¬åxendstreamýC~¢6A¬»hå?5µÎÍbKÏÔlwæ l?_%L;8ê8jßQüg-í×                                                     Jâ`d¬*»ö</nä"nAíÀ ÿ]©äXĦMYS?
endobjÎ{°m-°õ1Hgîºû:h*µVØK°F8ñGÔÎl~V3ÄÞ!bÊcÞDGë¯×Yl(.ãâÝå`£=cü§ýÔb£ÄèMu Íëve«XîÝ£#"VØgáKÔ?öþ§®êϺݡ[3uש²Nµq÷Ú?ßób¸l6=?'«ì>BÔ?t_Ñ  gÁ£õ=q@ÜÕÅûªE3¶L+ÕÅ©Cå}b-7Q,ì·Túlñ¨þ¦:=`î¹aÐçeÆãÜw°¥ès
E?ªpÇ !}¡1{¹_ZlÈë¡Á;u§·+ú,fo ä-AÏ[HM¥×?ÌÝåìtò*9¼Â^ѧ?aÛ`B>/Cö0Þ÷ðiNË­þÊ âÄCH´/9fVÎÉó6!vóÑ@ ðÉ!w±y;¯m$i¾äµH+·]YA|åÀD!j{øEÙ^äFÖÑ4?ääû5þµ)Ãå*y´¹Q« 7í?NýÍ'^õ(*C4f;3ûûn³i|nIï­0uo>#n³yµ¹5§*É»&Gtê;c.9 0 objéðÜ}zÔ22T`¦E'ýX®WÈô»&Â>9=ay$àÊGWdwÂ!f·¹eMvÖ=EÞߢ¯ò^¢n`ZÜöQ!Yß§µã gÚEbØù»ÑñÓ                                                             1ªAäØÿPâ'4RÅU]xý'¬¡Â>¹æîtê3Yêy.·¬4ÖçæÍÕOß®×ñh¶ap(<</Type/Font/Subtype/Type1/BaseFont/NimbusRomNo9L-Regu                   9îî~ýÚK°ÓÑ*ÈTt÷ ØL
/ToUnicode 8 0 R} Åta°Àj)                           _                                      Kû'Üd§éËpôKÜ~¯
/FirstChar 0 /LastChar 255ºP!y%µRÕÖ×bðó°~®_ñA=ùjÒÜW!þy0Æ¢]ìMºõ$ÊÍD96)éàjM[îÍÙù»@y»;«!BÌaÓ;²À    ÏÞî¨ZÚ8Ýà ìÏ?å²@ÙÏû¬W$O9²ößÄé«¶Âv(r·?,½ø?u«¬§ýéøZÍñÉÆSêÒfæÿ ÕÀb8ÇxØÝ¯¹ÅAýöµiº\ÉI$?À}0@bâÚÕq9s'XÝ/Widths[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0®ã¥Vø![
250 333 408 500 500 833 778 333 333 333 500 564 250 333 250 278Õ¶~~Yö*Ó}+«?rl¥z«°       :¬Î­>2y®GmÀúÀ
500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444
921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722
556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500e$<Ìßf¼p騸ag#au.ÁÄè6Ý?
333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500
500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0/NimbusRomNo9L-Regu
0 333 500 500 167 500 500 500 500 180 444 500 333 333 556 556
0 500 500 500 250 0 453 350 333 444 444 500 1000 1000 0 444
0 333 333 333 333 333 333 333 333 0 333 333 0 333 333 333
1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 889 0 276 0 0 0 0 611 722 889 310 0 0 0 0
0 667 0 0 0 278 0 0 278 500 722 500 0 0 0 0
Run Code Online (Sandbox Code Playgroud)

为什么“cat”不能读取pdf文件的内容?

v7d*_*po4 10

这是因为pdf不是纯文本。cat只能按原样打印文件。要使用命令行查看 pdf 文件的内容,您可以使用pdftotext.

pdftotext pdffile -
Run Code Online (Sandbox Code Playgroud)


Gil*_*il' 9

如果您调用cat包含中文文本的文件¹,它不会打印出英文翻译。对于计算机格式,情况是一样的:如果您调用cat包含某种格式数据的文件,它不会将其转换为另一种格式,例如纯文本。这不是它的工作:它的工作是将输入复制到输出而不修改它。

PDF 文件不是文本文件。PDF 文件可以包含文本,以及格式说明、图像、超链接等。如果要阅读 PDF 文件中的文本,则需要使用能够理解 PDF 文件格式的工具。

PDF 文件中有一些可识别的部分:NimbusRomNo9L表明文本是用 Nimbus Roman 字体编写的。这不是所有 PDF 查看器和打印机必须拥有的少数字体之一,因此它必须嵌入到 PDF 文件中。文本本身 ( abc) 没有隐藏在输出中,因为它被压缩了。

无论文件采用什么格式,都可以查看文件的常用工具是xdg-open. 在 Debian 和衍生产品上,see是一个替代方案。两者都通过从文件名扩展名猜测文件格式并调用适当的应用程序来工作。如果要显式提取文本部分(而忘记其他信息,例如图像、字体、文本在页面上的位置等),可以调用程序将 PDF 文件转换为文本,例如pdftotext.

¹如果您懂中文,请替换为格鲁吉亚语、加拿大语、克里语或任何您不会说的语言。