Appearance
The signature appearance is described by atick.Style(...). By default it shows the ATick logo on the left, the signer details on the right, and the validity mark.
atick.Style(
cn="Axonate Tech", # common name (shown bold after "Digitally Signed by:")
org="Acme Corp", # organisation line
reason="Approved", # "Reason: ..."
location="New Delhi", # "Location: ..."
date=None, # None = current time; "" = no date line; or your own string
date_format="%d-%b-%Y %I:%M %p", # strftime pattern for the auto date - any world format
)Date / time format
atick.Style(date_format="%Y-%m-%d %H:%M:%S") # 2026-06-10 15:54:21 (ISO-ish)
atick.Style(date_format="%d/%m/%Y %H:%M") # 10/06/2026 15:54 (DD/MM/YYYY)
atick.Style(date_format="%m/%d/%Y %I:%M %p") # 06/10/2026 03:54 PM (US)
atick.Style(date_format="%A, %d %B %Y") # Wednesday, 10 June 2026
atick.Style(date="Signed on 10-Jun-2026") # a fixed string you provide
atick.Style(date="") # no date lineLong names wrap onto more lines instead of shrinking the font, so the box never overflows.
The left side
atick.Style(cn="...") # default: the ATick logo
atick.Style(cn="...", image="logo.png") # your own logo (path or bytes; transparency preserved)
atick.Style(cn="...", image=False) # no logo
atick.Style(cn="...", image="cn") # the CN as large text on the LEFT (Adobe-style)The validity mark — ATick's signature look
The mark sits centred in the appearance and tells the reader the signature's status at a glance:
atick.Style(cn="...", green_tick=True) # the "?" mark - Adobe paints it GREEN if valid+trusted, RED if invalid
atick.Style(cn="...", always_check=True) # ATick's green-tick graphic as the base (Adobe still reds a bad signature)
atick.Style(cn="...", green_tick=False) # no mark - a plain signaturegreen_tick=True— the classic validity mark: a?that Adobe Acrobat repaints green for a valid, trusted signature and red for a broken one.always_check=True— embeds ATick's own green-tick graphic as the base, so the tick shows in every viewer; Adobe still overlays a red mark if the signature is actually invalid.
How Adobe shows it
ATick draws the appearance and the mark; Adobe then colours the mark based on the signature's validity and whether it trusts the certificate, so your reader instantly sees the status:
- Valid & trusted — signature intact and the certificate chains to a root Adobe trusts — “Signed and all signatures are valid.”
- Validity unknown — signature intact, but Adobe doesn't trust the certificate's root — “Validity unknown.”
- Not verified — Adobe hasn't validated the signature yet (no trust information) — “Signature not verified.”
- Invalid — the document was changed after signing (or the signature is broken) — “Signature is invalid.”
So the green tick appears only when the signature is valid and the signer's certificate chains to a root Adobe trusts (the Adobe Approved Trust List, or your organisation's trust). The same ATick appearance shows the question-mark or red-cross state automatically — you don't draw those; Adobe does.
Colour the mark with any Python colour, or a gradient:
atick.Style(cn="...", mark_color="#E53935") # hex
atick.Style(cn="...", mark_color="blue") # CSS name
atick.Style(cn="...", mark_color=(255, 140, 0)) # RGB 0-255 (or 0-1 floats)
atick.Style(cn="...", mark_gradient=["red", "orange", "yellow"]) # axial gradientDistinguished name
atick.Style(cn="Axonate Tech", dn="CN=Axonate Tech, O=Personal, C=IN")The DN is shown directly under the “Digitally Signed by:” line.
Custom-text-only appearance
Show only your own text — no “Signed by”, no date, no CN structure.\\n starts a new line; *word* makes that run bold.
atick.Style(body="*APPROVED*\nReviewed by: *Axonate Tech*\nThis document is *legally binding*.")Invisible signature
A cryptographically valid signature that draws nothing on the page:
atick.sign_pfx(pdf, pfx=pfx, password=pw, style=atick.Style(cn="..."), placements=[]) # empty placementsFine-tuning the layout
These keyword attributes give you precise control over the box geometry, the validity mark, the text block and the border.
atick.Style(cn="...",
top_reserve=0.32, # fraction of the box height reserved at the TOP for the
# logo / validity mark - raise it for a taller logo area
mark_scale=1.0, # scale the validity mark (>1 bigger, <1 smaller)
mark_dx=0.0, mark_dy=0.0, # nudge the mark horizontally / vertically (points)
text_dx=0.0, # nudge the whole text block horizontally (points)
text_top=None, # set the top of the text block (None = automatic)
border=True, # draw a border around the appearance
border_color=(0, 0, 0), # border colour - RGB 0-255 (or 0-1 floats)
border_width=1.0, # border width in points
date_format="%d-%b-%Y %I:%M %p", # strftime format used when "date" is not given explicitly
)top_reserve— fraction (0–1) of the appearance box height kept clear at the top for the logo / validity mark. Default0.32; raise it when your logo needs more headroom.mark_scale/mark_dx/mark_dy— scale and nudge (x / y offset) the validity mark.text_dx/text_top— nudge the text block horizontally / set its top edge.border_color/border_width— colour and width of the appearance border (used withborder=True).date_format— strftime format applied to the automatic date whendateis not given explicitly.
Other Style options
font_size, text_dx, text_top, text_color,bg_color, border, border_color, border_width,mark_scale, mark_dx, mark_dy, top_reserve,width, height, heading, ou,text.