# 使用Web组件打印前端页面
Web组件打印html页面时可通过W3C标准协议接口和应用接口两种方式实现。
使用打印功能前,请在module.json5中配置相关权限,添加方法请参考[在配置文件中声明权限](../security/AccessToken/declare-permissions.md)。
```
"requestPermissions":[
{
"name" : "ohos.permission.PRINT"
}
]
```
## 使用W3C标准协议接口拉起打印
通过创建打印适配器,拉起打印应用,并对当前Web页面内容进行渲染,渲染后生成的PDF文件信息通过fd传递给打印框架。W3C标准协议接口window.print()方法用于打印当前页面或弹出打印对话框。该方法没有任何参数,只需要在JavaScript中调用即可。
可通过前端css样式控制是否打印,例如@media print。再通过web加载该html页面的方式运行。
- print.html页面代码。
```html
printTest
This is a test page for printing
content content content
Thing |
Chairs |
1 |
blue |
2 |
green |
content content content
content content content
```
- 应用侧代码。
```ts
import { webview } from '@kit.ArkWeb';
@Entry
@Component
struct Index {
controller: webview.WebviewController = new webview.WebviewController();
build() {
Row() {
Column() {
Web({ src: $rawfile("print.html"), controller: this.controller })
.javaScriptAccess(true)
}
.width('100%')
}
.height('100%')
}
}
```
## 通过调用应用侧接口拉起打印。
应用侧通过调用[createWebPrintDocumentAdapter](../reference/apis-arkweb/js-apis-webview.md#createwebprintdocumentadapter11)创建打印适配器,通过将适配器传入打印的print接口调起打印。
```ts
// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';
import { print } from '@kit.BasicServicesKit'
@Entry
@Component
struct WebComponent {
controller: webview.WebviewController = new webview.WebviewController();
build() {
Column() {
Button('createWebPrintDocumentAdapter')
.onClick(() => {
try {
let webPrintDocadapter = this.controller.createWebPrintDocumentAdapter('example.pdf');
print.print('example_jobid', webPrintDocadapter, null, getContext());
} catch (error) {
console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
}
})
Web({ src: 'www.example.com', controller: this.controller })
}
}
}
```