我用过 qpdf
qpdf --qdf --object-streams=disable orig.pdf expanded.pdf
作为参考https://unix.stackexchange.com/a/109177/306249
我可以在文本编辑器中看到所有对象。但我无法查看 pdf 中的文本。
我用 pdf 中的“Hello world”文本进行了测试。但解压后看不到这段文字。
如何用对象查看文本?
答案1
即使在扩展所有对象之后,文本(字符串和单个字符)也不需要以 ASCII 表示,它们可以是十六进制编码的。
要查找文本,请按照下列步骤操作:
在展开的 PDF 中,查找所有名为 的键
/Contents
。它可能看起来像:/Contents 8 0 R
这告诉您相应页面的内容位于对象号 8 中。
转到对象编号 8。这可以通过搜索字符串找到
'8 0 obj'
stream ... endstream
在下面的行中,如果您在行尾看到以下任一行,则用行括起来:...
TJ
,Tj
,'
或者"
你会有一个显示运算符的文本在上班。
前一行包含文本,但它可能看起来像:
[(H)0.0976563(e)0.0976563(l)-599.902(l)0.0976563(o)0.0976563(W)0.0976563(o)-599.902(r)0.0976563(l)0.0976563(d)0.0976563(!)]TJ
嘿,你很幸运!你能解读“Hello World!”吗?字符串在这里?中间的数字只是为了控制各个字符的位置......
....现在我将停止教授 PDF。您可以阅读官方 PDF 格式规范中的所有详细信息:-)
还有一个提示:如果您搜索
我在 StackOverflow 上其他与 PDF 相关的答案,您可能会发现很多示例,其中详细介绍了如何阅读 PDF 代码。