如何在 Vaadin Flow 中打印?
How to Print in Vaadin Flow?
我想通过一个按钮打印出使用 Vaadin 14 创建的主页的内容。
Vaadin 8 的解决方案不幸不再适用:
Button print = new Button("Print This Page");
print.addClickListener(new Button.ClickListener() {
public void buttonClick(ClickEvent event) {
// Print the current page
JavaScript.getCurrent().execute("print();");
}
});
知道如何在 Vaadin14 中执行此操作吗?
在 Vaadin 10 及更高版本中,您可以 运行 任意 JavaScript 通过调用 Page::executeJs
UI.getCurrent().getPage().executeJs( … )
在那里你应该可以调用相同的打印函数。参见:Executing JavaScript in the Browser.
所以在你的情况下,打印当前页面:
UI.getCurrent().getPage().executeJs( "print();" ) ;
Vaadin 14.0.12 中的完整示例,使用 lambda 语法:
package com.example;
import com.vaadin.flow.component.ClickEvent;
import com.vaadin.flow.component.UI;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.html.H1;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.router.Route;
/**
* The main view contains a button and a click listener.
*/
@Route ( "" )
public class MainView extends VerticalLayout
{
public MainView ( )
{
this.add( new H1( "Print example" ) );
Button printButton = new Button( "Print…" );
printButton.addClickListener( ( ClickEvent < Button > clickEvent ) ->
{
UI.getCurrent().getPage().executeJs( "print();" );
} );
this.add(printButton);
}
}
我想通过一个按钮打印出使用 Vaadin 14 创建的主页的内容。
Vaadin 8 的解决方案不幸不再适用:
Button print = new Button("Print This Page");
print.addClickListener(new Button.ClickListener() {
public void buttonClick(ClickEvent event) {
// Print the current page
JavaScript.getCurrent().execute("print();");
}
});
知道如何在 Vaadin14 中执行此操作吗?
在 Vaadin 10 及更高版本中,您可以 运行 任意 JavaScript 通过调用 Page::executeJs
UI.getCurrent().getPage().executeJs( … )
在那里你应该可以调用相同的打印函数。参见:Executing JavaScript in the Browser.
所以在你的情况下,打印当前页面:
UI.getCurrent().getPage().executeJs( "print();" ) ;
Vaadin 14.0.12 中的完整示例,使用 lambda 语法:
package com.example;
import com.vaadin.flow.component.ClickEvent;
import com.vaadin.flow.component.UI;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.html.H1;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.router.Route;
/**
* The main view contains a button and a click listener.
*/
@Route ( "" )
public class MainView extends VerticalLayout
{
public MainView ( )
{
this.add( new H1( "Print example" ) );
Button printButton = new Button( "Print…" );
printButton.addClickListener( ( ClickEvent < Button > clickEvent ) ->
{
UI.getCurrent().getPage().executeJs( "print();" );
} );
this.add(printButton);
}
}