Submission watermarking makes grader downloads traceable. When a grader downloads a student’s PDF, JPEG, or PNG submission file, Enterprise serves a stamped copy instead of the original — so every copy that leaves the system carries who it belongs to and when it left. Students always receive their unmodified originals.
What the Stamp Contains
The watermark is a semi-transparent footer band (on PDFs, repeated on every page) or a bottom overlay (on images) containing:
- The student’s identity — or the anonymous mask when the assignment uses anonymous grading (see below)
- The download timestamp
- An optional custom label you define site-wide (for example, an institution name or a confidentiality notice)
- Optionally, the downloader’s name — so a shared copy also shows who took it out of the system
Supported File Types
- PDF — stamped on every page. Encrypted or password-protected PDFs can’t be modified and are served as originals.
- JPEG and PNG — stamped with a bottom overlay. PNG transparency is preserved.
- DOCX, PPTX, TXT, RTF, and GIF — not supported for watermarking; graders receive the original file. Stamping these formats would require server-side document conversion, which isn’t practical to do reliably.
Watermarking Never Blocks a Download
This is the feature’s core guarantee: if a file can’t be stamped for any reason — an unsupported type, an encrypted PDF, a missing image library, any generation failure — Enterprise silently serves the original file instead. Grading is never interrupted by a watermarking problem. Traceability is a bonus on top of the workflow, not a gate in front of it.
Requirements
Watermarking requires PressPrimer Assignment (free) version 2.2 or higher, which provides the download-delivery filter the feature is built on. On older free plugin versions, Enterprise shows an admin notice and the watermarking feature stays safely inactive — everything else in Enterprise, including the audit log and its CSV export, continues working normally.
Site-Wide Settings
Navigate to Assignments > Settings and select the Watermarking tab. Only administrators (or users with the ppaent_manage_watermark_settings capability) can see and change these settings.
- Watermark grader downloads by default — the site-wide default that assignments inherit
- Custom label line — optional extra text added to every stamp
- Include the downloading user’s name on the stamp — adds the downloader identity line
- Keep cached watermarked copies for — how long generated copies are retained (default: 7 days)
Per-Assignment Control
Each assignment has its own three-state watermarking setting in the assignment editor:
- On — watermark grader downloads for this assignment, regardless of the site default
- Off — never watermark this assignment’s downloads
- Inherit site default — follow the site-wide setting. The option label shows what that currently resolves to (for example, Inherit site default (currently On)).
The setting applies to PDF, JPEG, and PNG files on the assignment. Use per-assignment Off for high-volume assignments where traceability isn’t needed, or per-assignment On to protect a sensitive assignment on a site where the default is off.
Anonymous Grading Interplay
When an assignment uses Anonymous Grading, the watermark identity line follows the same masking decision as every other grading surface: while the submission is masked, the stamp shows the anonymous label (e.g., Submission #142), never the student’s real name. A watermarked download can’t leak an identity that the grading interface is hiding.
The filename masking introduced in Enterprise 2.1 also continues to apply — the watermark changes the file’s contents, and the filename rule still names the download.
What Graders See
On assignments with watermarking active, the grading interface shows a Downloads are watermarked indicator so graders know downloaded copies carry a stamp. The in-browser document viewer always renders the original file — watermarks apply to downloads only.
Caching and Cleanup
Generated watermarked copies are cached in a protected directory (not accessible over HTTP) so repeat downloads of the same file don’t regenerate the stamp. Changing the custom label or downloader-name setting invalidates affected copies, and a daily background task prunes cached copies older than the retention setting. The cache is invisible to day-to-day use — it exists so large PDFs don’t re-stamp on every download.
Audit Logging
Every watermarked download is recorded in the audit log as its own file.watermarked_download event, alongside the regular download event the free plugin already logs. The audit trail therefore distinguishes stamped serves from original serves.
What This Feature Is Not
- Not viewer watermarking — the in-browser document viewer shows originals; stamps apply to downloads only
- Not invisible or forensic watermarking — the stamp is a visible footer, by design
- Not applied to student downloads — students always receive their own original files
- Not configurable placement — the stamp is a footer band; placement options aren’t offered in this release
For Developers
apply_filters( 'pressprimer_assignment_should_watermark', $should, $file_id, $submission_id, $downloader_id )— override the watermark decision per downloadapply_filters( 'pressprimer_assignment_watermark_label', $lines, $file_id, $submission_id, $downloader_id )— modify the stamp’s text lines before renderingdo_action( 'pressprimer_assignment_file_watermarked', $file_id, $submission_id, $downloader_id )— fires after a watermarked copy is served
