我有一份PDF文档,我希望尽可能自动删除水印,以便从pdftotext
获得更好的结果。
用pdftk
解压后,我几乎用纯文字看到水印:
BT
1 0 0 1 277.40012 755.2005 Tm
0.501961 0.501961 0.501961 rg /R1 gs /R2 8 Tf
[()]TJ
0 0 Td
[(Abc)30(defghi K)30(lm)-40(no)]TJ
-5.423981 -9.600038 Td
[()]TJ
0 0 Td
[(Apr 01, 2017 12:34)]TJ
ET
水印是
Abcdefghi Klmno
Apr 01, 2017 12:34
浏览Document management — Portable document format后(特别是第248f页),我发现了以下内容:
BT: Begin Text
Tm: Text matrix - what is that?
x y Td: Move to the start of the next line with an offset of (x, y)
TJ: Text showing
Tf: Text state
ET: End Text
我不明白的是所有数字和原因
[(Abc)30(defghi K)30(lm)-40(no)]TJ
是否会增加Abc
和defghi K
之间的空间并减少lm
和no
之间的空间(看起来如此,请参阅第259页的图46)?按什么单位?
Tf
做了什么?
有人可以解释一下吗?
答案 0 :(得分:1)
我不明白的是所有数字和原因
[(Abc)30(defghi K)30(lm)-40(no)]TJ
是否会增加
Abc
和defghi K
之间的空间并减少lm
和no
之间的空间(看起来如此,请参阅第259页的图46)?< / p>
接近如此,正值减少,负值增加,参见表109 - PDF规范中的文本显示操作符:
阵列 TJ : 显示一个或多个文本字符串,允许单独的字形定位。 array 的每个元素都应该是字符串或数字。如果元素是字符串,则此运算符应显示字符串。如果是数字,运营商应按该数量调整文本位置;也就是说,它应翻译文本矩阵 T m 。数字应以文本空间为单位的千分之一表示(见9.4.4,&#34;文本空间详细信息&#34;)。根据写入模式,该量应从当前水平或垂直坐标减去。在默认坐标系中,正调整具有将下一个字形向左或向下移动给定量的效果。图46显示了将偏移量传递给 TJ 的效果示例。
这个数字有误导性,显然某些类型设定程序扰乱了作者想要展示的效果。该图的实际来源如下:
BT
/T1_2 1 Tf
0 Tc 8.7503 0 0 8.7503 118.989 450.2115 Tm
[([ \()11(A)53(W)57(A)79(Y again\) ] )41(T)43(J)]TJ
40.0016 0 0 40.0015 296.9949 440.2111 Tm
[(A)53(W)57(A)79(Y again)]TJ
8.7503 0 0 8.7503 118.989 403.2097 Tm
[([ \()11(A)9(\) 120 \()-50(W)-55(\) 120 \()11(A)9(\) 95 \()-41(Y again\) ] )41(T)43(J)]TJ
40.0016 0 0 40.0015 296.9949 392.2093 Tm
(AWAY again)Tj
ET
以什么单位?
单位文本空间的千分之一, cf.上面的引用。
文本空间是显示文本的坐标系。它应由文本矩阵 T m 定义,文本状态参数 T fs , T h , T 上升,它们共同决定从文本空间到用户空间的转换。
这通常与字形空间中的单个单元重合
Tf
做了什么?
根据表105 - PDF规范中的文本状态运算符
字体大小 Tf : 将文本字体 T f 设置为 font ,文本字体大小 T fs < / sub>,到 size 。 font 应为当前资源字典的 Font 子字典中字体资源的名称; size 应为表示比例因子的数字。 font 或 size 没有初始值;在显示任何文本之前,应使用 Tf 明确指定它们。
我现在唯一不理解的是
行0.501961 0.501961 0.501961 rg /R1 gs /R2 8 Tf
你能解释一下吗?
指令
0.501961 0.501961 0.501961 rg
将填充颜色设置为RGB颜色空间中的中灰色。
然后
/R1 gs
从名为 R1 的 ExtGState 资源设置其他图形状态参数;可能在这里定义了一些透明效果。
最后
/R2 8 Tf
将字体设置为由名为 R2 的字体资源定义的字体,并将字体大小设置为8.
答案 1 :(得分:0)
部分答案
font size Tf
设置字体和大小(参见第244页)
dictName gs
设置图形状态:
(PDF 1.2)在图形状态下设置指定的参数。 dictName应为图形状态参数的名称 当前资源的ExtGState子字典中的字典 字典(见下一小节)。
我不太清楚\R1
的含义。
1.0 1.0 0.0 rg % Set nonstroking colour to yellow
因此0.501961 0.501961 0.501961 rg
将颜色设置为某个灰度值。
Text矩阵是仿射变换矩阵,如the docs中所述。
因此
1 0 0 1 0 0 Tf
不会改变任何事情。
矩阵1 0 0 1 277.40012 755.2005 Tm
将文字向右(?)移动277.40012
个文本单位(?),向下移动755.2005
个文本单位。