打印网页
本节内容可参考示例文件"CaseStudy\WebViewer\打印网页.Table"
尽管Foxtable提供了多种报表输出工具,但是即使是专业报表和PDFCreator,在呈现方面也无法和网页相比,所以WebViewer其实也是一个新的强大无比的报表输出工具。
WebViewer提供了以下打印方法用于打印网页或输出PDF:
ShowPrintUI
显示打印对话框,语法:
ShowPrintUI(DialogKind)
DialogKind参数可选,如果省略,则调用浏览器的打印预览对话框,如果设置为CoreWebView2PrintDialogKind.System,则调用系统的打印对话框。
例如使用浏览器的打印预览窗口:
Dim
wv
As
WebViewer = e.Form.Controls("WebViewer1").WebViewer
wv.CoreWebView2.ShowPrintUI()
使用系统打印对话框:
Dim
wv
As
WebViewer = e.Form.Controls("WebViewer1").WebViewer
wv.CoreWebView2.ShowPrintUI(CoreWebView2PrintDialogKind.System)
PrintAsync
用于以异步方式打印当前网页,语法:
PrintAsync(PrintSettings)
PrintSettings参数可选,CoreWebView2PrintSettings类型,用于设置打印选项,后面会用表格列出所有打印选项。
PrintAsync方法的返回值为CoreWebView2PrintStatus,用于判断是否打印成功,以及打印失败的原因。
例如:
'''
Async
Dim
wv
As
WebViewer = e.Form.Controls("WebViewer1").WebViewer
Dim settings =
wv.CoreWebView2.Environment.CreatePrintSettings()
'创建打印设置
' A4 纸英寸值
(210mm = 8.27英寸,
297mm = 11.69英寸)
settings.MediaSize =
CoreWebView2PrintMediaSize.Custom
settings.PageWidth =
8.27
settings.PageHeight = 11.69
settings.Orientation =
CoreWebView2PrintOrientation.Portrait
settings.ShouldPrintBackgrounds =
True
Dim
printStatus =
Await
wv.CoreWebView2.PrintAsync(settings)
Dim
statusMessage
As
String
Select
Case
printStatus
Case
CoreWebView2PrintStatus.Succeeded
statusMessage =
"打印成功"
Case
CoreWebView2PrintStatus.PrinterUnavailable
statusMessage =
"打印机不可用"
Case
Else
statusMessage =
"打印失败"
End
Select
MessageBoxA.Show(statusMessage)
提醒:没有纸张类型的选择,所有的纸张都要自己换算成英寸单位后设置。
PrintToPdfAsync
用于以异步方式将网页打印为PDF,语法:
PrintToPdfAsync(FilePath,PrintSettings)
FilePath: PDF文件路径和名称
PrintSettings: CoreWebView2PrintSettings类型,用于设置打印选项,后面会用表格列出所有打印选项。
返回值为逻辑型,打印成功返回True,否则返回False。
例如:
'''
Async
Dim
wv
As
WebViewer = e.Form.Controls("WebViewer1").WebViewer
Dim settings =
wv.CoreWebView2.Environment.CreatePrintSettings()
' A4 纸英寸值
(210mm = 8.27英寸,
297mm = 11.69英寸)
settings.MediaSize =
CoreWebView2PrintMediaSize.Custom
settings.PageWidth =
8.27
settings.PageHeight = 11.69
settings.ScaleFactor = 1.0
' 100%
缩放
settings.Orientation =
CoreWebView2PrintOrientation.Portrait
settings.ShouldPrintBackgrounds =
True
Dim
pdffile
As
String
= ProjectPath &
"\test.pdf"
Dim
success =
Await
wv.CoreWebView2.PrintToPdfAsync(pdffile, settings)
If
success
Then
MessageBoxA.Show("PDF保存成功:
"
& pdffile)
Else
MessageBoxA.Show("PDF保存失败")
End
If
附录
CoreWebView2PrintSettings类用于设置打印选项,其属性有:
| 属性名称 | 类型 | 说明 |
|---|---|---|
| Collation | CoreWebView2PrintCollation | 打印机分页方式,用于控制多份打印时的页面排序(如逐份打印或逐页打印)。 |
| ColorMode | CoreWebView2PrintColorMode | 打印机色彩模式,例如 Color(彩色)或 Grayscale(灰度)。 |
| Copies | Integer | 打印份数,最小值为 1,最大值为 999。 |
| Duplex | CoreWebView2PrintDuplex | 打印机双面打印设置,例如 OneSided(单面)、TwoSidedLongEdge(长边翻转)或 TwoSidedShortEdge(短边翻转)。 |
| FooterUri | String | 如果 ShouldPrintHeaderAndFooter 为 True,则页脚显示的 URI(通常为页面地址或自定义文本)。 |
| HeaderTitle | String | 如果 ShouldPrintHeaderAndFooter 为 True,则页眉显示的标题文本。 |
| MarginBottom | Double | 下边距,单位为英寸。 |
| MarginLeft | Double | 左边距,单位为英寸。 |
| MarginRight | Double | 右边距,单位为英寸。 |
| MarginTop | Double | 上边距,单位为英寸。 |
| MediaSize | CoreWebView2PrintMediaSize | 打印机纸张大小。可选值包括 Default(默认)、Custom(自定义)。 |
| Orientation | CoreWebView2PrintOrientation | 打印方向,可选 Portrait(纵向)或 Landscape(横向)。 |
| PageHeight | Double | 纸张高度,单位为英寸。 |
| PageRanges | String | 要打印的页码范围,格式如 "1-5, 8, 11-13"。默认为空字符串,表示打印所有页面。 |
| PagesPerSide | Integer | 每张纸上打印的页面数(N-up 打印),可选值为 1、2、4、6、9、16。 |
| PageWidth | Double | 纸张宽度,单位为英寸。 |
| PrinterName | String | 要使用的打印机名称。如果未指定,则使用默认打印机。 |
| ScaleFactor | Double | 页面内容的缩放比例,值必须在 0.1 到 2.0 之间。例如 1.0 表示 100% 原始大小。 |
| ShouldPrintBackgrounds | Boolean | 是否打印背景颜色和图像。 |
| ShouldPrintHeaderAndFooter | Boolean | 是否打印页眉和页脚。 |
| ShouldPrintSelectionOnly | Boolean | 是否仅打印当前选中的内容。 |