This feature is only available in the Pro edition. Upgrade to Pro to access PDF watermarking.
Pro: PDF Watermarking
PDF Watermarking adds custom text watermarks to PDF files before download. Protect your content, discourage unauthorized sharing, and personalize downloads with user-specific information.
Overview
PDF Watermarking allows you to:
- Add text watermarks to PDF downloads
- Personalize with user information (name, email, date)
- Configure watermark position, color, and opacity
- Apply to all PDFs or specific products
- Process watermarks on-the-fly during download
How It Works
Watermarking Process
When a user downloads a PDF:
- User clicks download button
- Plugin intercepts download request
- Checks if watermarking is enabled for this product
- Creates temporary copy of PDF
- Adds watermark with user information
- Serves watermarked PDF to user
- Deletes temporary file
Dynamic Watermarks
Watermarks are generated dynamically for each download:
- User-specific: Each user gets their own watermark
- Real-time: Generated at download time
- Personalized: Includes user name, email, date
- Unique: Different for every download
Requirements
Server Requirements
PDF watermarking requires:
- PHP 7.0+: Minimum PHP version
- GD Library: For image manipulation
- Memory: 128MB minimum (256MB recommended)
- Execution Time: 60 seconds minimum
Checking Requirements
Verify your server meets requirements:
- Go to Pro Edition > PDF Watermarking
- Check "Server Requirements" section
- Green checkmarks = requirements met
- Red X = missing requirement

Installing GD Library
If GD Library is missing:
cPanel/Plesk:
- Contact hosting support
- Request GD Library installation
VPS/Dedicated:
# Ubuntu/Debian
sudo apt-get install php-gd
# CentOS/RHEL
sudo yum install php-gd
# Restart web server
sudo service apache2 restart
Configuration
Settings Location
Go to WP Enhanced > Free Download Woo, then click PDF Settings in the sidebar
Enable Watermarking
- Check "Enable PDF watermarking"
- Configure watermark settings
- Save changes

Watermark Text
Set the text to display as watermark:
Static Text:
CONFIDENTIAL - DO NOT SHARE
Dynamic Text with Placeholders:
Licensed to {user_name} ({user_email}) on {date}
Available Placeholders:
{user_name}- User's full name{user_email}- User's email address{user_id}- WordPress user ID{date}- Download date{time}- Download time{product_name}- Product name{site_name}- Your site name{site_url}- Your site URL
Example Output:
Licensed to John Smith ([email protected]) on 2024-01-15
Watermark Position
Choose where watermark appears:
- Top Left
- Top Center
- Top Right
- Middle Left
- Middle Center
- Middle Right
- Bottom Left
- Bottom Center
- Bottom Right

Watermark Appearance
Font Size:
- 8-72 points
- Default: 12 points
- Larger = more visible
Color:
- RGB color picker
- Default: Black (#000000)
- Use contrasting color
Opacity:
- 0-100%
- 0% = invisible
- 100% = fully opaque
- Default: 50% (semi-transparent)
Rotation:
- 0-360 degrees
- 0° = horizontal
- 45° = diagonal
- 90° = vertical
Product Selection
Apply watermarking to:
All PDF Products:
- Watermark every PDF download
- Simplest configuration
Specific Products:
- Select products from dropdown
- Only watermark selected products
- Mix watermarked and non-watermarked
Advanced Configuration
Per-Product Settings
Set different watermarks per product:
add_filter('somdn_pdf_watermark_text', function($text, $product_id) {
if ($product_id == 123) {
return 'Premium Content - Licensed to {user_name}';
}
return $text;
}, 10, 2);
Conditional Watermarking
Watermark based on conditions:
add_filter('somdn_enable_pdf_watermark', function($enable, $product_id, $user_id) {
// Don't watermark for VIP users
$user = get_user_by('id', $user_id);
if (in_array('vip', $user->roles)) {
return false;
}
return $enable;
}, 10, 3);
Custom Watermark Styling
Customize watermark appearance:
add_filter('somdn_pdf_watermark_style', function($style, $product_id) {
$style['font_size'] = 16;
$style['color'] = array(255, 0, 0); // Red
$style['opacity'] = 75;
$style['rotation'] = 45;
return $style;
}, 10, 2);
Watermark Examples
Basic Protection
CONFIDENTIAL - DO NOT DISTRIBUTE
Use Case: General content protection
User Attribution
Licensed to {user_name} - {user_email}
Use Case: Track who downloaded
Date Stamping
Downloaded on {date} at {time}
Use Case: Time-sensitive content
Full Attribution
Licensed to {user_name} ({user_email})
Downloaded from {site_name} on {date}
For personal use only - Do not redistribute
Use Case: Maximum protection
Subtle Watermark
{user_email}
Settings:
- Font Size: 8pt
- Opacity: 25%
- Position: Bottom Right
- Color: Light Gray
Use Case: Minimal visual impact
Performance Considerations
Processing Time
Watermarking adds processing time:
- Small PDFs (1-10 pages): 1-3 seconds
- Medium PDFs (10-50 pages): 3-10 seconds
- Large PDFs (50+ pages): 10-30 seconds
Server Resources
Memory Usage:
- 10-50MB per PDF
- Depends on PDF size and complexity
- Temporary files cleaned up automatically
CPU Usage:
- Brief spike during watermarking
- Returns to normal after completion
Optimization Tips
Increase PHP Limits:
// In wp-config.php
define('WP_MEMORY_LIMIT', '256M');
ini_set('max_execution_time', 120);
Optimize PDFs:
- Compress PDFs before upload
- Reduce image quality in PDFs
- Remove unnecessary pages
Caching:
- Watermarked PDFs are not cached
- Each download generates new watermark
- Ensures user-specific watermarks
Troubleshooting
Watermark Not Appearing
If watermark doesn't show:
- ✅ Verify watermarking is enabled
- ✅ Check file is actually a PDF
- ✅ Verify GD Library is installed
- ✅ Check watermark opacity (not 0%)
- ✅ Test with different PDF
Download Timeout
If download times out:
- ✅ Increase max_execution_time
- ✅ Increase PHP memory_limit
- ✅ Reduce PDF file size
- ✅ Check server resources
- ✅ Contact hosting support
Watermark Unreadable
If watermark is hard to read:
- ✅ Increase font size
- ✅ Adjust opacity (higher = more visible)
- ✅ Change color for contrast
- ✅ Try different position
- ✅ Reduce rotation angle
Server Error
If watermarking causes errors:
- ✅ Check PHP error log
- ✅ Verify GD Library installed
- ✅ Increase memory limit
- ✅ Test with simple PDF
- ✅ Disable and re-enable feature
Placeholders Not Replacing
If placeholders show literally:
- ✅ Check placeholder syntax:
{user_name} - ✅ Verify user is logged in (for user data)
- ✅ Check email capture is enabled
- ✅ Test with different placeholder
- ✅ Look for PHP errors
Security Considerations
Watermark Effectiveness
What Watermarks Do:
- Discourage casual sharing
- Identify source of leaks
- Add legal protection
- Personalize content
What Watermarks Don't Do:
- Prevent determined pirates
- Stop screenshot sharing
- Guarantee security
- Replace DRM
Additional Protection
Combine watermarking with:
Download Limits:
- Limit downloads per user
- Prevent mass downloading
Login Requirement:
- Require account to download
- Track who downloads
Terms of Service:
- Legal agreement not to share
- Consequences for violations
DMCA Protection:
- Register copyright
- Monitor for unauthorized use
- Issue takedown notices
Watermark Removal
Risk:
- Watermarks can be removed with PDF editing tools
- Not foolproof protection
Mitigation:
- Use diagonal watermarks (harder to remove)
- Multiple watermarks per page
- Watermark in document margins
- Combine with other protections
Use Cases
Digital Products
Protect digital products:
- eBooks
- Guides and tutorials
- Templates and worksheets
- Reports and whitepapers
Educational Content
Protect course materials:
- Lesson PDFs
- Study guides
- Worksheets
- Certificates
Business Documents
Protect business content:
- Proposals and quotes
- Contracts and agreements
- Reports and analyses
- Presentations
Membership Content
Protect member-only content:
- Exclusive resources
- Premium guides
- Member handbooks
- Training materials
Best Practices
Watermark Design
- Readable: Use legible font size
- Visible: Ensure watermark is noticeable
- Professional: Don't overdo it
- Informative: Include useful information
User Experience
- Fast: Optimize for quick processing
- Transparent: Inform users about watermarking
- Fair: Don't punish legitimate users
- Clear: Explain watermark purpose
Legal Protection
- Terms: Include in terms of service
- Notice: Inform users of watermarking
- Rights: Reserve your rights
- Enforcement: Be prepared to enforce
Performance
- Monitor: Watch server resources
- Optimize: Keep PDFs small
- Test: Test with various PDF sizes
- Limits: Set reasonable limits
Developer Hooks
Filters
somdn_enable_pdf_watermark
Control watermarking per download.
add_filter('somdn_enable_pdf_watermark', function($enable, $product_id, $user_id) {
// Your logic
return $enable;
}, 10, 3);
somdn_pdf_watermark_text
Modify watermark text.
add_filter('somdn_pdf_watermark_text', function($text, $product_id) {
// Your logic
return $text;
}, 10, 2);
somdn_pdf_watermark_style
Customize watermark appearance.
add_filter('somdn_pdf_watermark_style', function($style, $product_id) {
$style['font_size'] = 14;
$style['color'] = array(0, 0, 255); // Blue
$style['opacity'] = 60;
$style['rotation'] = 0;
$style['position'] = 'bottom-center';
return $style;
}, 10, 2);
somdn_pdf_watermark_placeholders
Add custom placeholders.
add_filter('somdn_pdf_watermark_placeholders', function($placeholders, $user_id, $product_id) {
$placeholders['{company}'] = get_user_meta($user_id, 'company', true);
$placeholders['{license_key}'] = get_post_meta($product_id, 'license_key', true);
return $placeholders;
}, 10, 3);
Actions
somdn_before_pdf_watermark
Before watermarking starts.
add_action('somdn_before_pdf_watermark', function($pdf_path, $product_id) {
// Pre-processing
}, 10, 2);
somdn_after_pdf_watermark
After watermarking completes.
add_action('somdn_after_pdf_watermark', function($pdf_path, $product_id, $success) {
// Post-processing
}, 10, 3);
Alternatives to Watermarking
Other Protection Methods
Password Protection:
- Encrypt PDFs with passwords
- More secure than watermarks
- Less convenient for users
DRM:
- Digital Rights Management
- Strongest protection
- Requires special readers
View-Only:
- Display PDFs in browser
- Disable download
- Use PDF viewer plugins
Expiring Links:
- Time-limited download links
- Links expire after X hours
- Prevents long-term sharing
Related Topics
- Download Tracking - Track who downloads
- Download Limits - Limit downloads
- Email Capture - Collect user information
- Settings Reference Pro - Complete Pro settings