我收到了一个非人类可读的文件,我想将其变为人类可读的。
我将如何从以下文件中获取文本内容:
thufir@dur:~/Documents$
thufir@dur:~/Documents$ file mystery.pdf
mystery.pdf: HP Printer Job Language data
thufir@dur:~/Documents$
thufir@dur:~/Documents$ pdfinfo mystery.pdf
Syntax Warning: May not be a PDF file (continuing anyway)
Syntax Error: Couldn't find trailer dictionary
Syntax Error: Couldn't read xref table
thufir@dur:~/Documents$
thufir@dur:~/Documents$ head -n 2 mystery.pdf
%-12345X@PJL
@PJL ENTER LANGUAGE = HBP
thufir@dur:~/Documents$
我根本不认为它是一个 pdf 文件,而是被print to file
'ed 而不是export pdf
'ed,或类似的,所以结果是 PJL 中的文件而不是 pdf。
也可以看看:
http://forums.fedoraforum.org/showthread.php?t=247913
我可以使用 ghostscript 将其恢复为人类可读的内容吗?
大约有 4000 行:
�x]�x�
当用猫或类似物直接观察时。
答案1
这些@PJL
线表示打印作业语言插入实际打印作业之前的标题。PJL 用于控制打印作业选项(例如双面打印、纸盘选择、装订、打孔、折叠输出)。它是由 HP 发明的。
打印作业的格式可以是任何格式——许多打印机供应商都支持并将其用作他们自己的(专有)打印机语言。
有趣的是接下来后标题@PJL
行。它可以是 PDF、PostScript、PCL 或其他任何内容。
同样有趣的是这句话@PJL ENTER LANGUAGE = ...
——它通常可靠地指示打印数据流的格式。
对于神秘.pdf 这是HBP
我迄今为止尚未遇到过的格式。
如果的确还有另一种开放或半开放格式(违反了该ENTER LANGUAGE = ...
行所说的),如 PostScript 或 PCL,Ghostscript或者GhostPDL将能够将其转换为 PDF。只需@PJL
先从标题中删除所有行。然后运行:
对于 PostScript 文件:
gs -o out.pdf -sDEVICE=pdfwrite input-file
对于 PCL 文件:
pcl6 -o out.pdf -sDEVICE=pdfwrite input-file
答案2
Kurt 的回答是正确的。我唯一想补充的是,在处理 Windows 中的 PRN 文件时,有多种类型的文件会以 PRN 文件类型打印,因此请确保它是 PCL 文件。即使在那之后,使用的 pcl 也可能是 MS PCLXL,在这种情况下 pcl6 会失败。下载 ghostpcl 并使用以下命令:
gpcl6-9533-linux_x86_64 -sDEVICE=pdfwrite -o output.pdf input-file