Skip to content

Commit 770cbda

Browse files
feat(PdfReader): support Watermark component (#405)
* PDF阅读器水印内容仅在全屏演示状态显示 #5811 * WatermarkDemoModeOnly 当全局水印(Watermark IsPage="true")时, 也会自动启用,无需手动设置 --------- Co-authored-by: Argo Zhang <[email protected]>
1 parent b9c66b3 commit 770cbda

File tree

3 files changed

+28
-11
lines changed

3 files changed

+28
-11
lines changed

src/components/BootstrapBlazor.PdfReader/PdfReader.razor.cs

+11-1
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,12 @@ public partial class PdfReader : IAsyncDisposable
131131
[Parameter]
132132
public string? Watermark { get; set; }
133133

134+
/// <summary>
135+
/// 获得/设置 水印内容仅在全屏演示状态显示
136+
/// </summary>
137+
[Parameter]
138+
public bool WatermarkDemoModeOnly { get; set; }
139+
134140
/// <summary>
135141
/// Debug
136142
/// </summary>
@@ -184,6 +190,10 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
184190
var userAgent = await Module!.InvokeAsync<string>("getUserAgent");
185191
var parser = Parser.GetDefault();
186192
ClientInfo = parser.Parse(userAgent);
193+
if (!WatermarkDemoModeOnly)
194+
{
195+
WatermarkDemoModeOnly = await Module.InvokeAsync<bool>("getGlobalWatermark");
196+
}
187197
await Refresh();
188198
}
189199
}
@@ -291,7 +301,7 @@ public virtual async Task Refresh(string? search = null, int? page = null, EnumP
291301

292302
}
293303

294-
private string GenUrl(bool filemode = true) => $"{ViewerBase}?file={(filemode ? HttpUtility.UrlEncode(FileName) : "(1)")}#page={Page}&navpanes={(Navpanes ? 0 : 1)}&toolbar={(Toolbar ? 0 : 1)}&statusbar={(Statusbar ? 0 : 1)}&pagemode={(Pagemode ?? EnumPageMode.Thumbs).ToString().ToLower()}&search={Search}" + (Zoom != null ? $"&zoom={Zoom.GetEnumName()}" : "") + (Watermark != null ? $"&wm={Watermark}" : "");
304+
private string GenUrl(bool filemode = true) => $"{ViewerBase}?file={(filemode ? HttpUtility.UrlEncode(FileName) : "(1)")}#page={Page}&navpanes={(Navpanes ? 0 : 1)}&toolbar={(Toolbar ? 0 : 1)}&statusbar={(Statusbar ? 0 : 1)}&pagemode={(Pagemode ?? EnumPageMode.Thumbs).ToString().ToLower()}&search={Search}" + (Zoom != null ? $"&zoom={Zoom.GetEnumName()}" : "") + (Watermark != null ? $"&wm={Watermark}" : "") + (WatermarkDemoModeOnly ? $"&wmonlydemo=true" : "");
295305

296306

297307
/// <summary>

src/components/BootstrapBlazor.PdfReader/wwwroot/app.js

+3-7
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@ export async function showPdf(baseurl, element, stream) {
88
const urlblob = URL.createObjectURL(blob);
99
element.src = baseurl.replace('(1)', urlblob);
1010
}
11-
export function setWatermark(watermark, element) {
12-
console.log(element.contentWindow.document)
13-
var elmnt = element.contentWindow.document.getElementById("watermark");
14-
//elmnt.style.display = "none";
15-
//var d = y.getElementById("watermark");
16-
//y.getElementById("watermark").value = watermark;
17-
}
11+
export function getGlobalWatermark() {
12+
return document.body.getAttribute('data-bb-watermark') == 'true';
13+
}

src/components/BootstrapBlazor.PdfReader/wwwroot/web/limit.js

+14-3
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,19 @@ function onBodyLoad() {
1717
}
1818

1919
if (getQueryVariable("wm"))
20-
{
21-
document.getElementById("watermark").value = getQueryVariable("wm");
20+
{
21+
if (getQueryVariable("wmonlydemo") && getQueryVariable("wmonlydemo")=='true')
22+
{
23+
document.addEventListener('fullscreenchange', () => {
24+
if (document.fullscreenElement === document.getElementById("viewerContainer") ) {
25+
document.getElementById("watermark").value = getQueryVariable("wm");
26+
} else {
27+
document.getElementById("watermark").value = '';
28+
}
29+
});
30+
} else {
31+
document.getElementById("watermark").value = getQueryVariable("wm");
32+
}
2233
}
2334
}
2435

@@ -31,4 +42,4 @@ function getQueryVariable(variable) {
3142
if (pair[0] == variable) { return pair[1]; }
3243
}
3344
return (false);
34-
}
45+
}

0 commit comments

Comments
 (0)