watermark(obj: { text: string; size: string }) {
let defaultSettings = {
watermark_txt: obj.text,
watermark_x: 20,
watermark_y: 20,
watermark_rows: 100,
watermark_cols: 100,
watermark_color: "#000000",
watermark_alpha: 0.08,
watermark_fontsize: obj.size,
watermark_font: "微软雅黑",
watermark_angle: 45,
watermark_x_space: 10,
watermark_y_space: 60,
watermark_width: 130,
watermark_height: 60,
};
if (arguments.length === 1 && typeof arguments[0] === "object") {
let src = arguments[0] || {};
for (let key in src) {
if (
src[key] &&
defaultSettings[key] &&
src[key] === defaultSettings[key]
)
continue;
else if (src[key]) defaultSettings[key] = src[key];
}
}
let resList = [];
let page_width = document.body.offsetWidth + 1000;
let page_height = document.body.offsetHeight + 1000;
if (
defaultSettings.watermark_cols === 0 ||
defaultSettings.watermark_x +
defaultSettings.watermark_width * defaultSettings.watermark_cols +
defaultSettings.watermark_x_space *
(defaultSettings.watermark_cols - 1) >
page_width
) {
defaultSettings.watermark_cols =
(page_width -
defaultSettings.watermark_x +
defaultSettings.watermark_x_space) /
(defaultSettings.watermark_width + defaultSettings.watermark_x_space);
defaultSettings.watermark_x_space =
(page_width -
defaultSettings.watermark_x -
defaultSettings.watermark_width * defaultSettings.watermark_cols) /
(defaultSettings.watermark_cols - 1);
}
if (
defaultSettings.watermark_rows == 0 ||
defaultSettings.watermark_y +
defaultSettings.watermark_height * defaultSettings.watermark_rows +
defaultSettings.watermark_y_space *
(defaultSettings.watermark_rows - 1) >
page_height
) {
defaultSettings.watermark_rows =
(defaultSettings.watermark_y_space +
page_height -
defaultSettings.watermark_y) /
(defaultSettings.watermark_height + defaultSettings.watermark_y_space);
defaultSettings.watermark_y_space =
(page_height -
defaultSettings.watermark_y -
defaultSettings.watermark_height * defaultSettings.watermark_rows) /
(defaultSettings.watermark_rows - 1);
}
let x;
let y;
for (let i = 0; i < defaultSettings.watermark_rows; i++) {
y =
defaultSettings.watermark_y +
(defaultSettings.watermark_y_space + defaultSettings.watermark_height) *
i;
for (let j = 0; j < defaultSettings.watermark_cols; j++) {
x =
defaultSettings.watermark_x +
(defaultSettings.watermark_width +
defaultSettings.watermark_x_space) *
j;
let mask_div = {
style: "",
txt: "",
};
mask_div.txt = defaultSettings.watermark_txt;
mask_div.style = JSON.stringify({
"pointer-events": "none",
"-webkit-transform":
"rotate(-" + defaultSettings.watermark_angle + "deg)",
"-moz-transform":
"rotate(-" + defaultSettings.watermark_angle + "deg)",
"-ms-transform":
"rotate(-" + defaultSettings.watermark_angle + "deg)",
"-o-transform": "rotate(-" + defaultSettings.watermark_angle + "deg)",
transform: "rotate(-" + defaultSettings.watermark_angle + "deg)",
position: "absolute",
left: x + "px",
top: y + "px",
overflow: "hidden",
"z-index": "9",
opacity: defaultSettings.watermark_alpha,
"font-size": defaultSettings.watermark_fontsize,
"font-family": defaultSettings.watermark_font,
color: defaultSettings.watermark_color,
"text-align": "left",
width: defaultSettings.watermark_width + "px",
height: defaultSettings.watermark_height + "px",
display: "block",
});
resList = resList.concat(mask_div);
}
}
return resList;
}