
Used to print a document or a local view
<body>
<app>
@(await Html.RenderComponentAsync<App>(RenderMode.ServerPrerendered))
</app>
</body>
<PrintButton Icon="fa-solid fa-print" Text="Print" PreviewUrl="/printview" />
Print the page by clicking the print button
Demo
After clicking the print button below, a new page pops up for print preview, confirms that it is correct, and then clicks the print button in the print preview page for printer selection
PrintTurn on printing by setting up the ShowPrint
Demo
In this example, the pop-up window content is a custom component DataDialogComponent
the Footer
where the button itself is located is hidden, so the Print
button built into the pop-up window cannot be displayed, and setting the ShowPrintButtonInHeader
makes the printThe button appears in the title bar
By setting up the content components to print, call the print servicedirectly print jobs
Demo
@page "/prints"
@inject IStringLocalizer<Prints> Localizer
<h3>Print</h3>
<h4>Used to print a document or a local view</h4>
<Tips class="mt-3">
<ul class="ul-demo">
<li>Set up <code style='margin-left: 14px;' > PreviewUrl</code>, open a new page for print preview and click the print button on this page for page printing</li>
<li>If you are printing a button in the <code>Dialog</code> component when you do not set the <code>PreviewUrl</code>, the pop-up contents are printed</li>
</ul>
</Tips>
<Pre><body>
<app>
@(await Html.RenderComponentAsync<App>(RenderMode.ServerPrerendered))
</app>
</body></Pre>
<Pre><PrintButton Icon="fa-solid fa-print" Text="Print" PreviewUrl="/printview" /></Pre>
<DemoBlock Title="Basic usage" Introduction="Print the page by clicking the print button" Name="PrintButton">
<p>After clicking the print button below, a new page pops up for print preview, confirms that it is correct, and then clicks the print button in the print preview page for printer selection</p>
<PrintButton Icon="fa-solid fa-print" Text="Print" PreviewUrl="/printview" />
</DemoBlock>
<DemoBlock Title="Print the bullet window" Introduction="Turn on printing by setting up the <code>ShowPrint</code>" Name="PrintDialog">
<p>@((MarkupString)Localizer["PrintDialogP", nameof(DataDialogComponent), nameof(DialogOption.ShowPrintButtonInHeader)].Value)</p>
<Button Icon="fa-solid fa-print" Text="Print" OnClick="OnClickPrint" />
</DemoBlock>
<DemoBlock Title="Print service" Introduction="By setting up the content components to print, call the <b>print service</b>directly print jobs" Name="PrintService">
<Button Icon="fa-solid fa-print" Text="Print" OnClick="OnClickPrintService" />
</DemoBlock>
// Copyright (c) Argo Zhang (argo@163.com). All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Website: https://www.blazor.zone or https://argozhang.github.io/
namespace BootstrapBlazor.Shared.Samples;
/// <summary>
///
/// </summary>
public partial class Prints
{
/// <summary>
/// 获得 弹窗注入服务
/// </summary>
[Inject]
[NotNull]
private DialogService? DialogService { get; set; }
/// <summary>
/// 获得 弹窗注入服务
/// </summary>
[Inject]
[NotNull]
private PrintService? PrintService { get; set; }
private async Task OnClickPrint()
{
var op = new DialogOption()
{
Title = Localizer["DialogTitle"],
ShowPrintButton = true,
ShowPrintButtonInHeader = true,
ShowFooter = false,
BodyContext = 1
};
op.BodyTemplate = BootstrapDynamicComponent.CreateComponent<DataDialogComponent>(new Dictionary<string, object?>
{
[nameof(DataDialogComponent.OnClose)] = new Action(async () => await op.Dialog.Close())
}).Render();
await DialogService.Show(op);
}
private Task OnClickPrintService() => PrintService.PrintAsync<DataDialogComponent>(op =>
{
// 弹窗配置
op.Title = Localizer["DialogTitle"];
op.ShowPrintButton = true;
op.ShowPrintButtonInHeader = true;
op.ShowFooter = false;
op.BodyContext = 2;
// 弹窗组件所需参数
return new Dictionary<string, object?>
{
[nameof(DataDialogComponent.OnClose)] = new Action(async () => await op.Dialog.Close())
};
});
}