打印机作业语言 --> PDF

打印机作业语言 --> PDF

我收到了一个非人类可读的文件,我想将其变为人类可读的。

我将如何从以下文件中获取文本内容:

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

相关内容