如何正确使用CoreWebView2PrintSettings?设置上边距无效问题
WebView2 PrintToPdfAsync 自定义上边距无效的解决方法
问题现象
调用PrintToPdfAsync生成PDF时,已设置MarginTop但边距仍为默认值,PDF可正常生成但自定义边距不生效,代码如下:
CoreWebView2PrintSettings printSettings = _instance.webView21.CoreWebView2.Environment.CreatePrintSettings(); printSettings.Orientation = CoreWebView2PrintOrientation.Landscape; printSettings.MarginTop = 100; _instance.webView21.CoreWebView2.PrintToPdfAsync(output, printSettings)
问题原因
默认情况下CoreWebView2PrintSettings.MarginMode是CoreWebView2PrintMarginMode.Default,此时WebView2会优先使用浏览器默认边距或页面自身的CSS边距设置,忽略手动指定的MarginTop等自定义边距参数。
解决步骤
修改代码,添加MarginMode设置为Custom,确保自定义边距参数生效:
CoreWebView2PrintSettings printSettings = _instance.webView21.CoreWebView2.Environment.CreatePrintSettings(); printSettings.Orientation = CoreWebView2PrintOrientation.Landscape; // 关键:切换到自定义边距模式 printSettings.MarginMode = CoreWebView2PrintMarginMode.Custom; printSettings.MarginTop = 100; // 单位为设备无关像素(DIP) await _instance.webView21.CoreWebView2.PrintToPdfAsync(output, printSettings);
额外说明
MarginTop的单位是设备无关像素(DIP),换算参考:1英寸 = 96 DIP,1毫米 ≈ 3.7795 DIP- 如果设置后仍有问题,检查页面自身的
@media printCSS规则,这类规则可能会覆盖打印边距,需调整页面样式或禁用相关规则
内容的提问来源于stack exchange,提问作者Antonio Vieira
相关产品推荐
相关产品推荐

