|
| 1 | +# TAGLINE |
| 2 | + |
| 3 | +Stamp a synthetic tracking-dot pattern onto a PDF |
| 4 | + |
| 5 | +# TLDR |
| 6 | + |
| 7 | +**Add** a dot pattern to a PDF |
| 8 | + |
| 9 | +```deda_create_dots [page.pdf]``` |
| 10 | + |
| 11 | +Set the **serial** and **manufacturer** encoded in the dots |
| 12 | + |
| 13 | +```deda_create_dots --serial [123456] --manufacturer [Epson] [page.pdf]``` |
| 14 | + |
| 15 | +Set the **timestamp** stored in the pattern |
| 16 | + |
| 17 | +```deda_create_dots --year [18] --month [11] --day [11] --hour [11] --minutes [11] [page.pdf]``` |
| 18 | + |
| 19 | +Print the dots in **magenta** so they are easy to see |
| 20 | + |
| 21 | +```deda_create_dots --debug [page.pdf]``` |
| 22 | + |
| 23 | +# SYNOPSIS |
| 24 | + |
| 25 | +**deda_create_dots** [_options_] _pdf_ |
| 26 | + |
| 27 | +# PARAMETERS |
| 28 | + |
| 29 | +_pdf_ |
| 30 | + |
| 31 | +> PDF the dots are added to. The original file is not modified. |
| 32 | +
|
| 33 | +**--serial** _n_ |
| 34 | + |
| 35 | +> Serial number encoded in the pattern. The default is **123456**. |
| 36 | +
|
| 37 | +**--manufacturer** _name_ |
| 38 | + |
| 39 | +> Manufacturer name encoded in the pattern. The default is **Epson**. The names this pattern accepts are **Xerox**, **Epson**, and **Dell**. |
| 40 | +
|
| 41 | +**--year** _n_, **--month** _n_, **--day** _n_, **--hour** _n_, **--minutes** _n_ |
| 42 | + |
| 43 | +> Timestamp fields encoded in the pattern. The defaults are year **18**, month **11**, day **11**, hour **11**, and minutes **11**. |
| 44 | +
|
| 45 | +**--dotradius** _inches_ |
| 46 | + |
| 47 | +> Radius of each dot, in inches. The default is the toolkit's built-in radius. |
| 48 | +
|
| 49 | +**--debug** |
| 50 | + |
| 51 | +> Draw magenta dots instead of yellow ones. |
| 52 | +
|
| 53 | +# DESCRIPTION |
| 54 | + |
| 55 | +**deda_create_dots** builds a tracking-dot matrix from the serial, manufacturer, and timestamp fields and stamps it onto a copy of a PDF. It prints the matrix, then writes **new_dots.pdf** in the working directory. The input PDF is left unchanged. |
| 56 | + |
| 57 | +**--debug** uses magenta so the added dots are visible without a microscope. The calibration page from **deda_anonmask_create -w** can be used as the input PDF. |
| 58 | + |
| 59 | +# CAVEATS |
| 60 | + |
| 61 | +The output path is always **new_dots.pdf** in the current directory. A file of that name is overwritten. There is no flag to choose another path. |
| 62 | + |
| 63 | +The manufacturer string has to be one the pattern tables include. An unknown name fails when the matrix is built. The year field is a two-digit value, matching the default of **18**. |
| 64 | + |
| 65 | +# HISTORY |
| 66 | + |
| 67 | +**deda_create_dots** is part of **DEDA**, written by **Timo Richter** and **Stephan Escher** and described in their **2018** paper on forensic analysis and anonymisation of printed documents. |
| 68 | + |
| 69 | +# SEE ALSO |
| 70 | + |
| 71 | +[deda_anonmask_create](/man/deda_anonmask_create)(1), [deda_anonmask_apply](/man/deda_anonmask_apply)(1), [deda_parse_print](/man/deda_parse_print)(1) |
| 72 | + |
| 73 | +# RESOURCES |
| 74 | + |
| 75 | +```[Source code](https://github.com/dfd-tud/deda)``` |
| 76 | + |
| 77 | +<!-- verified: 2026-10-06 --> |
0 commit comments