在深入了解PDF表格处理之前, 我们最好先了解一下PDF表格处理相关的流指令. 事实上, PDF流指令里并没有专门处理表格的指令, PDF的表格全是用PDF路径指令实现的, 简而言之就是PDF表格是用路径指令画出来的, 因此要把画出来的PDF表格转成WORD表格或是要把画出来的PDF表格转成EXCEL表格都不是一件容易的事, 其困难的程度是可想而知的, 毕竟此表格非彼表格, 画出来的表格是图! 废话少说, 直接上代码分析才是硬道理, 下面是一个表格部分的PDF流指令代码:
0 0 0.502 rg
35.25 719.25 0.75 0.75 re f
35.25 719.25 0.75 0.75 re f
36 719.25 170.25 0.75 re f
206.25 719.25 0.75 0.75 re f
207 719.25 57.75 0.75 re f
264.75 719.25 0.75 0.75 re f
265.5 719.25 314.25 0.75 re f
579.75 719.25 0.75 0.75 re f
579.75 719.25 0.75 0.75 re f
35.25 705 0.75 14.25 re f
206.25 705 0.75 14.25 re f
264.75 705 0.75 14.25 re f
579.75 705 0.75 14.25 re f
BT
41.25 695.25 TD
0 0 0 rg
/F1 9.75 Tf
0.1241 Tc (COMPARE) Tj
47.25 0 TD 0 Tc -0.1875 Tw ( ) Tj
140.25 0 TD -0.375 Tc 0 Tw (39h) Tj
14.25 0 TD 0 Tc -0.1875 Tw ( ) Tj
27.75 0 TD /F0 9.75 Tf
0.0617 Tc 0 Tw (NONE) Tj
26.25 0 TD 0 Tc -0.1875 Tw ( ) Tj
ET
0 0 0.502 rg
35.25 704.25 0.75 0.75 re f
36 704.25 170.25 0.75 re f
206.25 704.25 0.75 0.75 re f
207 704.25 57.75 0.75 re f
264.75 704.25 0.75 0.75 re f
265.5 704.25 314.25 0.75 re f
579.75 704.25 0.75 0.75 re f
35.25 693 0.75 11.25 re f
206.25 693 0.75 11.25 re f
264.75 693 0.75 11.25 re f
579.75 693 0.75 11.25 re f
BT
41.25 683.25 TD
0 0 0 rg
/F1 9.75 Tf
0.2492 Tc 0 Tw (COPY) Tj
26.25 0 TD 0 Tc -0.1875 Tw ( ) Tj
161.25 0 TD -0.375 Tc 0 Tw (18h) Tj
14.25 0 TD 0 Tc -0.1875 Tw ( ) Tj
27.75 0 TD /F0 9.75 Tf
0.0617 Tc 0 Tw (NONE) Tj
26.25 0 TD 0 Tc -0.1875 Tw ( ) Tj
ET
该代码包括两行三列, 是一个三列表格的一部分, 其表格显示如下:
-----------------------------------------------------
|COMPARE |39h |NONE |
-----------------------------------------------------
|COPY |18h |NONE |
-----------------------------------------------------
下面我们逐一分析这段流里面每一条指令的含义, 以下指令解析参考 PDF Reference, version 1.7.
1. 0 0 0.502 rg rg指令指定一个RGB颜色值, 0 0 0.502为三个前置参数, 该指令指定一个 RGB值为(0, 0, 0.502)的蓝色, 三个参数取值范围为0 - 1之间的浮点数.
2. 35.25 719.25 0.75 0.75 re f re指令为插入一个矩形到当前的路径构成一个完整的路径, 其参数为(x, y, width, height), 该指令指定以个以(35.25, 704.25)为起点高度和宽度都为 0.75 的矩形路径, 仅跟其后的 f为填充该路径.
后续内容请阅读: PDF转WORD开发分享系列---Sumatrapdf研究(2)---PDF表格转WORD表格处理(1)
参考文献: PDF Reference, version 1.7