# 使用Web组件的PDF文档预览能力 Web组件æ供了在网页ä¸é¢„览PDF的能力。应用å¯ä»¥é€šè¿‡Web组件的[src](../reference/apis-arkweb/ts-basic-components-web.md#web)å‚æ•°å’Œ[loadUrl()](../reference/apis-arkweb/js-apis-webview.md#loadurl)接å£ä¸ä¼ å…¥PDF文件,æ¥åŠ è½½PDFæ–‡æ¡£ã€‚æ ¹æ®PDF文档æ¥æºä¸åŒï¼Œå¯ä»¥åˆ†ä¸ºä¸‰ç§å¸¸ç”¨åœºæ™¯ï¼šåŠ 载网络PDF文档ã€åŠ 载本地PDF文档ã€åŠ 载应用内resource资æºPDF文档。 PDFæ–‡æ¡£é¢„è§ˆåŠ è½½è¿‡ç¨‹ä¸ï¼Œè‹¥æ¶‰åŠç½‘络文档获å–,请在module.json5ä¸é…置网络访问æƒé™ï¼Œæ·»åŠ 方法请å‚考[在é…置文件ä¸å£°æ˜Žæƒé™](../security/AccessToken/declare-permissions.md)。 ``` "requestPermissions":[ { "name" : "ohos.permission.INTERNET" } ] ``` 在下é¢çš„示例ä¸ï¼ŒWebç»„ä»¶åˆ›å»ºæ—¶æŒ‡å®šé»˜è®¤åŠ è½½çš„ç½‘ç»œPDF文档 `www.example.com/test.pdf`,该地å€ä¸ºç¤ºä¾‹ï¼Œä½¿ç”¨æ—¶éœ€æ›¿æ¢ä¸ºçœŸå®žå¯è®¿é—®åœ°å€: ```ts // xxx.ets import { webview } from '@kit.ArkWeb'; @Entry @Component struct WebComponent { controller: webview.WebviewController = new webview.WebviewController(); build() { Column() { Web({ src: "https://www.example.com/test.pdf", // æ–¹å¼ä¸€ åŠ è½½ç½‘ç»œPDF文档 // getContext(this).filesDir + "/test.pdf", // æ–¹å¼äºŒ åŠ è½½æœ¬åœ°åº”ç”¨æ²™ç®±å†…PDF文档 // "resource://rawfile/test.pdf", // æ–¹å¼ä¸‰ 应用内resource资æºPDF文档 // $rawfile('test.pdf'), // æ–¹å¼å›› 应用内resource资æºPDF文档 controller: this.controller }) .domStorageAccess(true) } } } ``` 上述示例ä¸ï¼Œç”±äºŽPDF预览页é¢å¯¹äºŽä¾§è¾¹å¯¼èˆªæ 是å¦å±•å¼€ä¼šæ ¹æ®ç”¨æˆ·æ“作使用`window.localStorage`进行æŒä¹…化记录,所以需开å¯æ–‡æ¡£å¯¹è±¡æ¨¡åž‹å˜å‚¨[domStorageAccess](../reference/apis-arkweb/ts-basic-components-web.md#domstorageaccess)æƒé™: ``` Web().domStorageAccess(true) ``` 在Webç»„ä»¶åˆ›å»ºæ—¶ï¼ŒæŒ‡å®šé»˜è®¤åŠ è½½çš„PDF文档。在默认PDFæ–‡æ¡£åŠ è½½å®ŒæˆåŽï¼Œå¦‚果需è¦å˜æ›´æ¤Web组件显示的PDF文档,å¯ä»¥é€šè¿‡è°ƒç”¨[loadUrl()](../reference/apis-arkweb/js-apis-webview.md#loadurl)接å£åŠ 载指定的PDF文档。[Web组件](../reference/apis-arkweb/ts-basic-components-web.md#web)的第一个å‚æ•°å˜é‡srcä¸èƒ½é€šè¿‡çŠ¶æ€å˜é‡ï¼ˆä¾‹å¦‚:@State)动æ€æ›´æ”¹åœ°å€ï¼Œå¦‚需更改,请通过[loadUrl()](../reference/apis-arkweb/js-apis-webview.md#loadurl)é‡æ–°åŠ 载。 åŒæ—¶åŒ…å«ä¸‰ç§PDFæ–‡æ¡£åŠ è½½é¢„è§ˆåœºæ™¯: - é¢„è§ˆåŠ è½½ç½‘ç»œPDF文件。 ```ts Web({ src: "https://www.example.com/test.pdf", controller: this.controller }) .domStorageAccess(true) ``` - é¢„è§ˆåŠ è½½åº”ç”¨æ²™ç®±å†…PDF文件,需è¦å¼€å¯åº”用ä¸æ–‡ä»¶ç³»ç»Ÿçš„访问[fileAccess](../reference/apis-arkweb/ts-basic-components-web.md#fileaccess)æƒé™ã€‚ ```ts Web({ src: getContext(this).filesDir + "/test.pdf", controller: this.controller }) .domStorageAccess(true) .fileAccess(true) ``` - é¢„è§ˆåŠ è½½åº”ç”¨å†…PDF资æºæ–‡ä»¶ï¼Œæœ‰ä¸¤ç§ä½¿ç”¨å½¢å¼ã€‚`$rawfile('test.pdf')`å½¢å¼æ— 法指定下é¢ä»‹ç»çš„预览å‚数。 ```ts Web({ src: "resource://rawfile/test.pdf", // 或 $rawfile('test.pdf') controller: this.controller }) .domStorageAccess(true) ``` æ¤å¤–,通过é…ç½®PDF文件预览å‚数,å¯ä»¥æŽ§åˆ¶æ‰“开预览时页é¢çŠ¶æ€ã€‚ 当å‰æ”¯æŒå¦‚下å‚æ•°: | è¯æ³• | æè¿° | | --------- | ---------- | | nameddest=destination | 指定PDF文档ä¸çš„命åç›®æ ‡ã€‚ | | page=pagenum | 使用整数指定文档ä¸çš„页ç ,文档第一页的pagenum值为1。| | zoom=scale zoom=scale,left,top | 使用浮点或整数值设置缩放和滚动系数。 例如:缩放值100表示缩放值为100%。 å‘左和å‘上滚动值ä½äºŽåæ ‡ç³»ä¸ï¼Œ0,0 表示å¯è§é¡µé¢çš„å·¦ä¸Šè§’ï¼Œæ— è®ºæ–‡æ¡£å¦‚ä½•æ—‹è½¬ã€‚ | | toolbar=1 \| 0 | 打开或关é—顶部工具æ 。 | | navpanes=1 \| 0 | 打开或关é—ä¾§è¾¹å¯¼èˆªçª—æ ¼ã€‚ | URL示例: ``` https://example.com/test.pdf#Chapter6 https://example.com/test.pdf#page=3 https://example.com/test.pdf#zoom=50 https://example.com/test.pdf#page=3&zoom=200,250,100 https://example.com/test.pdf#toolbar=0 https://example.com/test.pdf#navpanes=0 ``` <!--RP1--><!--RP1End-->