Watermarks
Add text or image watermarks to PDF documents.
Text Watermarks
#![allow(unused)]
fn main() {
use printwell::watermark::{Watermark, WatermarkPosition, add_watermark};
let watermark = Watermark::text("CONFIDENTIAL")
.position(WatermarkPosition::Center)
.rotation(45.0)
.opacity(0.3)
.font_size(72.0)
.color(128, 128, 128);
let result = add_watermark(&pdf_data, &watermark)?;
}
Image Watermarks
#![allow(unused)]
fn main() {
let logo = std::fs::read("logo.png")?;
let watermark = Watermark::image(&logo)
.position(WatermarkPosition::BottomRight)
.opacity(0.5)
.scale(0.5);
let result = add_watermark(&pdf_data, &watermark)?;
}
Position Options
| Position | Description |
|---|---|
Center | Center of page |
TopLeft | Top-left corner |
TopCenter | Top center |
TopRight | Top-right corner |
MiddleLeft | Middle left |
MiddleRight | Middle right |
BottomLeft | Bottom-left corner |
BottomCenter | Bottom center |
BottomRight | Bottom-right corner |
Or use custom coordinates:
#![allow(unused)]
fn main() {
let watermark = Watermark::text("DRAFT")
.custom_position(100.0, 200.0);
}
Layer Options
Background- Behind page content (default)Foreground- On top of page content
#![allow(unused)]
fn main() {
let watermark = Watermark::text("SAMPLE")
.layer(WatermarkLayer::Foreground);
}
Page Selection
Apply watermarks to specific pages:
#![allow(unused)]
fn main() {
// All pages (default)
let watermark = Watermark::text("DRAFT")
.pages(WatermarkPageSelection::All);
// Odd pages only
let watermark = Watermark::text("DRAFT")
.pages(WatermarkPageSelection::Odd);
// Even pages only
let watermark = Watermark::text("DRAFT")
.pages(WatermarkPageSelection::Even);
// First page only
let watermark = Watermark::text("DRAFT")
.pages(WatermarkPageSelection::First);
// Specific pages
let watermark = Watermark::text("DRAFT")
.page_list(&[1, 3, 5, 7]);
// Page range
let watermark = Watermark::text("DRAFT")
.page_range(2, 10);
}
Multiple Watermarks
Add multiple watermarks at once:
#![allow(unused)]
fn main() {
use printwell::watermark::add_watermarks;
let watermarks = vec![
Watermark::text("DRAFT")
.position(WatermarkPosition::Center)
.opacity(0.2),
Watermark::text("Company Name")
.position(WatermarkPosition::TopCenter)
.font_size(12.0)
.opacity(0.5),
];
let result = add_watermarks(&pdf_data, &watermarks)?;
}
Styling Options
| Option | Description | Default |
|---|---|---|
rotation | Rotation in degrees | 0.0 |
opacity | Opacity (0.0-1.0) | 0.5 |
font_size | Font size in points | 72.0 |
font_name | Font family | “Helvetica” |
color | RGB color | Gray |
scale | Image scale factor | 1.0 |