11 pdf binaryfiles
大多数PDF在某些ASCII之间包含许多二进制外观部分.但是我记得还看过这样的PDF文件,其中大部分的二进制文件都没有,人们可以在文本编辑器中打开它们来研究它们的结构.
是否有将二进制PDF部分转换为ASCII/ANSI的技巧,工具或命令?(最好是"像啤酒一样自由",甚至"像在自由中一样自由")
Kur*_*fle 20
[更新2014-10-15]
Ghostscript在其源代码库中有一个用PostScript编写的小实用程序.它被称为pdfinflt.ps.如果幸运的话,它可能已经在Ghostscript安装位置的"toolbin"子目录中沉睡.否则,请到这里:
现在通过Ghostscript解释器将其与您的目标输入PDF一起运行:
gswin32c.exe -- c:/path/to/pdfinflt.ps your-input.pdf deflated-output.pdf
Run Code Online (Sandbox Code Playgroud)
pdfinflt.ps将(尝试)展开所有"流"包含在使用下面的压缩过滤器/方法PDF: ,/FlateDecode,/LZWDecode,./ASCII85Decode/ASCIIHexDecode
它不会尝试删除/RunLengthDecode,/CCITTFaxDecode,/DCTDecode,/JBIG2Decode和/JPXDecode.(压缩/二进制字体也将不变地传递到输出PDF中.)
如果您是一个冒险的心情,你可能不敢取消注释中禁用工具的线/RunLengthDecode,/DCTDecode并CCITTFaxDecode看它是否仍然适用?
qpdf将PDF转换为支持文本编辑器访问的内部格式的另一个有用工具是qpdf.它是一个"命令行程序,可以对PDF文件进行结构化,内容保留转换".
用法示例:
qpdf \
--qdf \
--object-streams=disable \
input-with-compressed-objects.pdf \
output-with-expanded-objects.pdf
Run Code Online (Sandbox Code Playgroud)
交换机QDF强制执行的-mode 输出--qdf整齐地组织和重新排序对象.它添加了注释以跟踪原始对象ID和页面内容流.所有对象字典都被写入"标准化"标准格式,以便于解析.
的--object-streams=disable原因被压缩成另一个对象的流数据(否则不可识别)单个对象的提取.
mutoolArtifex是Ghostscript的创建者,在免费和开源软件许可证下提供另一种工具:MuPDF.
MuPDF附带一个命令行工具,mutool它还可以扩展压缩的PDF对象流:
mutool \
clean \
-d \
-a \
input.pdf \
output.pdf \
4,7,8,9
Run Code Online (Sandbox Code Playgroud)
clean:重写PDF;-d:解压缩所有流;-a:ASCIIhex编码所有二进制流;4,7,8,9:选择要包含的第4,7,8和9页output.pdf.pdftk最后,以下是如何使用该pdtk工具解压缩PDF对象的流:
pdftk your-input.pdf cat output uncompressed-output.pdf uncompress
Run Code Online (Sandbox Code Playgroud)
请注意uncompress命令行中的最后一个单词.
以上所有工具均适用于Linux,Mac OSX,Unix和Windows.
我最喜欢的是QPDF大多数实际案例.
但是,您应该进行自己的实验并比较每个建议工具的(不同)输出.然后自己挑选.