在pdf中检测水印的位置

时间:2013-06-09 19:25:55

标签: pdf watermark pypdf

我在ubuntu上。

我有一个pdf文件,页面分为网格。网格的每个块包含候选人的姓名/年龄/ dob /照片。有些记录的水印“被取消资格”

我需要在另一份名单中将取消资格的候选人刮掉他的pdf。 使用pyPdf我能够获得单独的记录,但它也包括水印候选人。

如何检测水印?如果我能得到水印的坐标,我该如何与候选人匹配?

我对python pyPdf

以外的解决方案持开放态度

1 个答案:

答案 0 :(得分:1)

(实际上这不是一个答案,只是对评论的分析。)

我自己不知道pyPdf(或任何python PDF类),但这里是如何为样本条目创建水印;基于此,任何了解pyPDF的人都可以更容易地建议。

综述

根据pyPDF(或其他python PDF类)如何允许访问页面内容,有两种主要的基本方法:

  1. 如果班级在页面内容流中按顺序返回内容(文本和图像)的信息:水印图像xobject在条目数据之前被引用。因此,标记了xobject图像之前的任何条目。

  2. 如果没有按照页面内容流指示的顺序给出信息,则必须使用坐标比较,其本身很简单。在这种情况下,可能有意义的是,在使用[0.1 0 0 0.1 0 0]转换矩阵插入图像时,使用身份转换矩阵绘制文本。

  3. 详情

    这是条目#200;另一个水印条目的构建类似:

    dataset 200 with DELETED watermark

    通过图像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