我知道表格文本提取不是每个人都喜欢的。但是,当阅读PDF流数据的表,有一些事情我不明白。
Table的PDF码流为:
q % Graphic State Starting Point
0 292.5 595.3 442.8 re % Rectangle x y Width Height
W* % Clipping Even Odd Rule
n % End without Filling
0 0 0 rg % Color of Stroke
161 735 m % Move to New Path
160.8 734.7 l 89.3 734.7 l 89 735 l 88.8 735.3 l 161.3 735.3 l
161 735 l % straight line
h % Close the Current Path
f* % Fill Path with Even Odd Rule
Q
且下划线为:
q % Graphic State Starting Point
1 0 0 1 451.5 759.5 cm % Current matrix
0.5 w % Width of Stroke
0 0 0 RG % color
0 -0.8 m % Move to New Path
72 -0.8 l % Straight Line
S % Stroke Line
Q % End of Graphic State
在下划线中,m
修改cm
并将其设置为451.5 759.5,并从当前点(即451.5)到72点(即493.5,小于0.8)到cm
(即759.5)绘制直线
我现在不明白,怎么把表格线从一个点画到另一个点
考虑线条绘制部分,其中m
是移动到操作符,l
是行到:
% command coordinates
% =====================
161 735 m % Move-to a(161, 735)
160.8 734.7 l % line-to b(161, 735 -.3)
89.3 734.7 l % line-to c(90, 735 -.3)
89 735 l % line-to d(90, 735)
88.8 735.3 l % line-to e(90, 735 +.3)
161.3 735.3 l % line to f(161, 735 +.3)
161 735 l % line to g(161, 735)
h % close-path
f % fill
(x
在160和89左右有一些奇怪的小变化,这些变化太小而无法在视觉上显示-渲染怪癖?)。
[在非常高的分辨率下,行尾会有箭头
<============ ... =======>
)
除此之外,它绘制了一个非常薄的长框,角为(89, 734,7)
, (161, 734.7)
, (161, 735.3)
和(89, 735.3)
。+/-的影响。y轴上的3个点最有可能给人一种稍微加粗的线条而不是矩形的效果。