这个pdf是如何编码的?字体看起来很有趣

时间:2018-01-31 06:03:27

标签: pdf fonts

在阅读pdf文档时,我已多次看到此效果。所以,一些pdf有这个有趣的污迹字体,它看起来像是一个扫描图像。但是,我可以选择字体,在选择字体时,突出显示的字体显示的方式与图像中显示的不同。

默认外观 default appearance

选择字体时的外观 highlight appearance

总的来说,似乎有些ocr正在幕后发生。 我使用的文档阅读器是 Atril 1.12.2 文档查看器。

我的问题是: pdf,图片或文字中编码了什么?我选择文本时会发生什么?

1 个答案:

答案 0 :(得分:1)

在OP共享的文档中可以观察到另一个不错的变化:

Unmarked

Marked

我们在这里看到的确实是OCR的结果。但是,在观看者的场景背后发生了一些事情,OCR已经发生过,结果已经整合到PDF中。

PDF页面实际上包含一个扫描图像,在该图像上绘制了不可见的文本。

只要没有选择任何内容,Atril就会显示,您只能看到扫描图像。但是,一旦开始选择文本,它就会以蓝色覆盖标记区域,并在其上显示白色的标记(以前不可见)文本。

因此,在不能在图像中的相应字母正上方添加不可见文本的情况下,这可能会导致有趣的空白,例如在"多维&#34之后的OP屏幕截图中的空白;。如果OCR输出中出现错误,可以在我的屏幕截图中查看错误数据。

其他PDF查看器通常仅通过对文本区域应用某些效果来标记文本,例如反转颜色或覆盖半透明颜色。

可能会认为Atril方法的一个优点是,在选择过程中,人们会看到一个正在选择的确切文本,并且可能最终会复制。

内容流

如上所述,PDF页面实际上包含一个扫描图像,在该图像上绘制了不可见的文本。

在页面内容流中,相应的指令如下所示:

1 0 0 1 0 0.2401 cm

(将坐标系向上移动一分钟)

1 1 1 rg
1 i
/RelativeColorimetric ri
/R794 gs
0 0 576 719.5 re
f

(将图像区域填充为白色)

q
576 0 0 719.5 0 0 cm
/Im0 Do
Q

(绘制位图图像)

1 0 0 1 0 -0.2401 cm

(将坐标系向下移动一分钟,撤消初始升档)

BT

(开始一个文本对象)

0 0 0 rg

(将填充颜色设置为黑色)

/TT1 1 Tf
0.05 Tc
0 Tw
3 Tr

(选择大小为1的字体 TT1 ,字符之间有一些额外空格,字之间没有多余空格,和文字渲染模式3,即不可见

7.3 0 0 7.3 83.8 678.4401 Tm
(SOFTWARE-PRACTICE ) Tj

(将文本坐标系设置为水平移动83.8,垂直移动678.4401,缩放7.3并绘制一些文本)

0.08 Tc
7.4 0 0 7.1 175.2 678.4401 Tm
(AND ) Tj

(稍微改变字符间距,将文本坐标系设置为水平移动175.2,垂直移动678.4401,水平缩放7.4,垂直7.1缩放,绘制一些文本)

...

TL; DR

  

pdf,图像或文字中编码了什么?

两者,图像加上不可见的文字。

  

我选择文字时会发生什么?

Atril将文本覆盖为蓝色,并将选定的(以前不可见的)文本绘制为白色。