dealspace/lib/watermark.go

44 lines
1.6 KiB
Go

package lib
// Watermark applies per-request watermarks at serve time.
// Stored files are always clean originals; watermarks are injected on read.
//
// Supported types:
// - PDF: dynamic watermark (user + timestamp + org)
// - Word (.docx): watermark injected into document XML
// - Excel (.xlsx): sheet protection + watermark header row
// - Images: watermark text burned into pixel data
// - Video: watermark overlay via ffmpeg, served as stream
// - Other: encrypted download only, no preview
// WatermarkConfig holds per-project watermark settings.
type WatermarkConfig struct {
Template string // e.g. "{user_name} · {org_name} · {datetime} · CONFIDENTIAL"
Opacity float64
Position string // "diagonal" | "footer" | "header"
}
// WatermarkPDF applies a watermark to PDF data. Stub.
func WatermarkPDF(data []byte, userName, orgName string, wc *WatermarkConfig) ([]byte, error) {
// TODO: implement PDF watermarking
return data, nil
}
// WatermarkDOCX applies a watermark to a Word document. Stub.
func WatermarkDOCX(data []byte, userName, orgName string, wc *WatermarkConfig) ([]byte, error) {
// TODO: implement DOCX watermarking
return data, nil
}
// WatermarkXLSX applies a watermark to an Excel spreadsheet. Stub.
func WatermarkXLSX(data []byte, userName, orgName string, wc *WatermarkConfig) ([]byte, error) {
// TODO: implement XLSX watermarking
return data, nil
}
// WatermarkImage applies a watermark to image data. Stub.
func WatermarkImage(data []byte, userName, orgName string, wc *WatermarkConfig) ([]byte, error) {
// TODO: implement image watermarking
return data, nil
}