44 lines
1.6 KiB
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
|
|
}
|