我在ubuntu上。
我有一个pdf文件,页面分为网格。网格的每个块包含候选人的姓名/年龄/ dob /照片。有些记录的水印“被取消资格”
我需要在另一份名单中将取消资格的候选人刮掉他的pdf。 使用pyPdf我能够获得单独的记录,但它也包括水印候选人。
如何检测水印?如果我能得到水印的坐标,我该如何与候选人匹配?
我对python pyPdf
以外的解决方案持开放态度答案 0 :(得分:1)
(实际上这不是一个答案,只是对评论的分析。)
我自己不知道pyPdf(或任何python PDF类),但这里是如何为样本条目创建水印;基于此,任何了解pyPDF的人都可以更容易地建议。
综述
根据pyPDF(或其他python PDF类)如何允许访问页面内容,有两种主要的基本方法:
如果班级在页面内容流中按顺序返回内容(文本和图像)的信息:水印图像xobject在条目数据之前被引用。因此,标记了xobject图像之前的任何条目。
如果没有按照页面内容流指示的顺序给出信息,则必须使用坐标比较,其本身很简单。在这种情况下,可能有意义的是,在使用[0.1 0 0 0.1 0 0]转换矩阵插入图像时,使用身份转换矩阵绘制文本。
详情
这是条目#200;另一个水印条目的构建类似:
通过图像xobject完成水印。只有一个图像xobject为两个水印条目使用的页面定义:
4 0 obj
<</Type/Page/MediaBox [0 0 595 841]
/Rotate 0/Parent 3 0 R
/Resources<</ProcSet[/PDF /ImageC /ImageI /Text]
/ColorSpace 18 0 R
/ExtGState 19 0 R
/XObject 20 0 R
/Font 21 0 R
>>
/Contents 5 0 R
>>
endobj
20 0 obj
<</R17
17 0 R>>
endobj
17 0 obj
<</Subtype/Image
/ColorSpace 16 0 R
/Width 128
/Height 88
/BitsPerComponent 8
/Filter/FlateDecode/Length 463>>stream
[...]
endstream
endobj
在内容流中,在绘制条目本身的数据之前插入此xobject / R17 :
q 0.1 0 0 0.1 0 0 cm
[...]
q 1045 0 0 495 462.5 6510.5 cm
/R17 Do
Q
q
10 0 0 10 0 0 cm BT
0.000487366 Tc
/R10 8 Tf
1 0 0 1 86 650.75 Tm
(Sex : Male)Tj
0.000304794 Tc
-64 0 Td
(Age : 43)Tj
-0.000140686 Tc
-1 11.05 Td
(House No :)Tj
-0.00002085 Tc
1 31.95 Td
(Name :)Tj
0.00008575 Tc
/R12 7.15 Tf
25.5 17.8 Td
( 200 )Tj
ET
Q
1547.5 6475 485 535.5 re
S
q
10 0 0 10 0 0 cm BT
-0.000403137 Tc
/R14 8 Tf
1 0 0 1 145.1 708.5 Tm
(XVX0001081)Tj
0.000421651 Tc
/R14 7.05 Tf
-90.35 -14.95 Td
(Ramesh Kumar)Tj
0.000373332 Tc
/R10 7.05 Tf
-33 -12.75 Td
(Father's )Tj
0.000193787 Tc
7.3 TL
(Name)'
0.00037774 Tc
/R14 7.05 Tf
40.25 1.8 Td
(Ram Singh)Tj
0 Tc
2.5 -11.85 Td
(37)Tj
0.00137196 Tc
/R12 7.15 Tf
-5.25 13.35 Td
(:)Tj