{"id":9300,"date":"2026-09-08T11:30:09","date_gmt":"2026-09-08T03:30:09","guid":{"rendered":"https:\/\/support.fuxinsoft.cn\/?p=9300"},"modified":"2026-09-20T14:16:26","modified_gmt":"2026-09-20T06:16:26","slug":"%e6%8c%87%e5%ae%9a-pdf-%e9%a1%b5%e9%9d%a2%e5%8a%a0%e8%bd%bd%e8%8c%83%e5%9b%b4%ef%bc%88%e6%8c%89%e9%a1%b5%e6%8e%a7%e5%88%b6%e6%b8%b2%e6%9f%93%ef%bc%8c%e6%94%af%e6%8c%81%e8%bf%90%e8%a1%8c%e6%97%b6","status":"publish","type":"post","link":"https:\/\/support.fuxinsoft.cn\/?p=9300","title":{"rendered":"\u6307\u5b9a PDF \u9875\u9762\u52a0\u8f7d\u8303\u56f4\uff08\u6309\u9875\u63a7\u5236\u6e32\u67d3\uff0c\u652f\u6301\u8fd0\u884c\u65f6\u52a8\u6001\u5207\u6362\uff09"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u9002\u7528\u4ea7\u54c1\uff1aFoxit PDF SDK for Web\uff08WebPDF Viewer \/ PDFViewCtrl \/ UIExtension\uff09<br>\u9a8c\u8bc1\u7248\u672c\uff1a11.1.0\uff08\u6587\u4e2d\u63a5\u53e3\u5728 8.x\/9.x \u6587\u6863\u7ebf\u5747\u5df2\u6709\u5bf9\u5e94\u5199\u6cd5\uff0c\u8de8\u7248\u672c\u4f7f\u7528\u8bf7\u4ee5\u6240\u7528\u7248\u672c\u5b98\u65b9\u6587\u6863\u4e3a\u51c6\uff09<br>\u9002\u7528\u573a\u666f\uff1a\u5728\u7ebf\u6559\u80b2\/\u8bfe\u4ef6\u5c55\u793a\u3001\u7ae0\u8282\u6388\u6743\u9605\u8bfb\u3001\u5ba1\u9605\u5206\u5de5\u3001\u6309\u7ae0\u8282\u4e0b\u53d1\u5185\u5bb9\u7b49&#8221;\u53ea\u5141\u8bb8\u67e5\u770b\u6307\u5b9a\u9875\u7801\u533a\u95f4&#8221;\u7684\u573a\u666f<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e00\u3001\u9700\u6c42\u4e0e\u7ed3\u8bba<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u9700\u6c42\uff1aPDF \u5168\u6587\u5171 N \u9875\uff0c\u5e0c\u671b<strong>\u521d\u59cb\u5316\u65f6\u4ec5\u5c55\u793a\/\u6e32\u67d3\u6307\u5b9a\u9875\u7801\u533a\u95f4<\/strong>\uff08\u5982\u7b2c 1-10 \u9875\uff09\uff0c\u5e76\u4e14<strong>\u533a\u95f4\u53ef\u4ee5\u5728\u8fd0\u884c\u65f6\u52a8\u6001\u4fee\u6539<\/strong>\uff08\u5982\u8bb2\u5e08\u6388\u8bfe\u63a8\u8fdb\u5230\u7b2c 3 \u7ae0\uff0c\u628a\u5c55\u793a\u533a\u95f4\u5207\u5230\u7b2c 21-30 \u9875\uff1b\u672a\u6388\u6743\u9875\u663e\u793a\u5360\u4f4d\u63d0\u793a\uff09\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ed3\u8bba\uff1a<strong>Web SDK \u6ca1\u6709&#8221;\u6307\u5b9a\u903b\u8f91\u9875\u7801\u52a0\u8f7d\u8303\u56f4&#8221;\u7684\u6253\u5f00\u53c2\u6570<\/strong>\uff08\u4e0d\u5b58\u5728 <code>loadPageRange:[1,10]<\/code> \u4e4b\u7c7b\u7684\u9009\u9879\uff09\uff0c\u4f46\u53ef\u4ee5\u901a\u8fc7 <strong><code>customs.PageCustomRender<\/code> \u81ea\u5b9a\u4e49\u6e32\u67d3\u94a9\u5b50<\/strong> \u5b9e\u73b0\u6309\u9875\u63a7\u5236&#8221;\u662f\u5426\u6e32\u67d3&#8221;\uff0c\u914d\u5408\u4e00\u4e2a<strong>\u95ed\u5305\u6301\u6709\u7684\u53ef\u53d8\u9875\u7801\u96c6\u5408<\/strong>\u5b9e\u73b0\u8fd0\u884c\u65f6\u52a8\u6001\u5207\u6362\u3002\u8be5\u65b9\u6848\u7ecf WebSDK 11.1 \u771f\u673a\u81ea\u52a8\u5316\u9a8c\u8bc1\uff1a\u521d\u59cb\u5316\u9650\u5236\u3001\u4e09\u6bb5\u533a\u95f4\u52a8\u6001\u5207\u6362\u3001\u533a\u95f4\u56de\u5207\u6062\u590d\u300150 \u6b21\u8fde\u7eed\u5207\u6362\u538b\u6d4b\uff080 \u5931\u8d25\uff09\u3001\u8df3\u9875+\u653e\u884c\u8054\u52a8\u5168\u90e8\u901a\u8fc7\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u540c\u65f6\uff0cSDK \u539f\u751f\u7684<strong>\u6309\u9700\u52a0\u8f7d\u673a\u5236<\/strong>\uff08<code>openPDFByHttpRangeRequest<\/code> + HTTP Range \u5206\u5757\u4e0b\u8f7d\uff09\u5929\u7136\u53ea\u4e0b\u8f7d\u5f53\u524d\u53ef\u89c1\u9875\u6240\u9700\u7684\u5b57\u8282\uff0c\u4e0e\u672c\u65b9\u6848\u53e0\u52a0\u4f7f\u7528\u53ef\u4ee5\u5728&#8221;\u5c55\u793a\u8303\u56f4\u53d7\u9650&#8221;\u7684\u540c\u65f6\u83b7\u5f97&#8221;\u4f20\u8f93\u91cf\u53d7\u9650&#8221;\u7684\u6548\u679c\u2014\u2014\u4f46\u8981\u6ce8\u610f\uff1a<strong>Range \u6309\u9700\u52a0\u8f7d\u53ea\u662f\u4f20\u8f93\u4f18\u5316\uff0c\u5185\u5b58\u4e2d\u6700\u7ec8\u4ecd\u53ef\u89e3\u6790\u5168\u6587\uff0c\u4e0d\u80fd\u4f5c\u4e3a\u5b89\u5168\u8fb9\u754c<\/strong>\u3002\u771f\u6b63\u7684&#8221;\u7981\u6b62\u67e5\u770b&#8221;\u5fc5\u987b\u843d\u5728\u6e32\u67d3\u63a7\u5236\uff08\u672c\u6587\u65b9\u6848\uff09\u6216\u670d\u52a1\u7aef\u6587\u6863\u5207\u5206\u4e0a\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e8c\u3001\u6838\u5fc3\u539f\u7406<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>PDFViewer<\/code> \u6784\u9020\u53c2\u6570\u7684 <code>customs.PageCustomRender<\/code> \u662f\u4e00\u4e2a<strong>\u5de5\u5382\u51fd\u6570<\/strong>\uff0c\u8fd4\u56de\u7684\u7c7b\u4f1a\u88ab SDK \u5bf9\u6bcf\u4e2a\u9875\u9762\u5b9e\u4f8b\u5316\u4e00\u6b21\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6784\u9020\u53c2\u6570\uff1a<code>eCustom<\/code>\uff08\u9875\u9762\u81ea\u5b9a\u4e49\u5bb9\u5668 DOM \u8282\u70b9\uff0c\u5373 <code>.fv__pdf-custom-page-container<\/code>\uff09\u3001<code>pdfPageRender<\/code>\uff08<code>PDFPageRender<\/code> \u5b9e\u4f8b\uff09\uff1b<\/li>\n\n\n\n<li><code>render()<\/code>\uff1a\u6bcf\u9875\u8fdb\u5165\u6e32\u67d3\u6d41\u7a0b\u65f6\u88ab\u8c03\u7528\u3002<strong>\u8fd4\u56de <code>false<\/code> \u5219 SDK \u8df3\u8fc7\u8be5\u9875\u5185\u5bb9\u6e32\u67d3<\/strong>\uff08\u9875\u9762\u53ea\u5269\u5bb9\u5668\u6846\u67b6\uff0c\u65e0\u5185\u5bb9 canvas\uff09\uff1b\u8fd4\u56de <code>true<\/code>\/<code>undefined<\/code>\/Promise \u6b63\u5e38\u6e32\u67d3\uff1b<\/li>\n\n\n\n<li><code>destroy()<\/code>\uff1a\u9875\u9762\u88ab\u56de\u6536\/\u6587\u6863\u5173\u95ed\u65f6\u8c03\u7528\uff0c\u7528\u4e8e\u6e05\u7406\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e8e\u662f&#8221;\u9650\u5236\u53ef\u770b\u9875\u7801\u533a\u95f4&#8221;\u5c31\u53d8\u6210\uff1a\u5728 <code>render()<\/code> \u91cc\u67e5\u8be2\u5f53\u524d\u9875\u7801\uff0c\u4e0d\u5728\u96c6\u5408\u5185\u5c31\u8fd4\u56de <code>false<\/code>\uff08\u53ef\u4ee5\u987a\u624b\u5199\u5165\u5360\u4f4d\u63d0\u793a DOM\uff09\u3002\u800c&#8221;\u8fd0\u884c\u65f6\u52a8\u6001\u5207\u6362&#8221;\u5219\u662f\uff1a\u628a\u5141\u8bb8\u6e32\u67d3\u7684\u9875\u7801\u96c6\u5408\u653e\u5728<strong>\u5de5\u5382\u95ed\u5305<\/strong>\u91cc\uff08\u5b9e\u4f8b\u5316\u65f6\u65e0\u6cd5\u66f4\u6362\u5de5\u5382\uff0c\u4f46\u95ed\u5305\u53d8\u91cf\u53ef\u53d8\uff09\uff0c\u5207\u6362\u533a\u95f4\u65f6\u66f4\u65b0\u96c6\u5408\u5e76\u89e6\u53d1\u91cd\u6e32\u67d3\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u540d\u79f0\u8fa8\u6790\uff1a<code>customs.PDFPageRendering<\/code>\uff08\u8986\u76d6\u7c7b\uff0c\u793a\u4f8b\u76ee\u5f55 <code>\/examples\/PDFViewCtrl\/override-rendering<\/code>\uff09\u662f&#8221;\u52a0\u8f7d\u5360\u4f4d UI&#8221;\u94a9\u5b50\uff08rendering\/rendered\/destroy \u751f\u547d\u5468\u671f\uff09\uff0c<strong>\u6ca1\u6709&#8221;\u8fd4\u56de false \u8df3\u8fc7\u6e32\u67d3&#8221;\u7684\u80fd\u529b<\/strong>\uff0c\u4e0d\u8981\u4e0e <code>PageCustomRender<\/code>\uff08\u793a\u4f8b\u76ee\u5f55 <code>\/examples\/PDFViewCtrl\/load-before-rendering<\/code>\uff09\u6df7\u6dc6\u3002<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e09\u3001\u5b8c\u6574\u5b9e\u73b0\u4ee3\u7801\uff08\u53ef\u76f4\u63a5\u843d\u5730\uff09<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ ========== 1. \u95ed\u5305\u6301\u6709\"\u5f53\u524d\u5141\u8bb8\u6e32\u67d3\u7684\u9875\u7801\u96c6\u5408\"\uff080 \u57fa\u9875\u7801\uff09 ==========\nvar allowedPages = new Set();\nfunction fillRange(from, to) {            \/\/ 1 \u57fa\u95ed\u533a\u95f4\uff0c\u5982 (1, 10) \u8868\u793a\u7b2c 1~10 \u9875\n    allowedPages.clear();\n    for (var i = from - 1; i &lt;= to - 1; i++) allowedPages.add(i);\n}\nfillRange(1, 10);                          \/\/ \u521d\u59cb\uff1a\u4ec5\u7b2c 1-10 \u9875\n\n\/\/ \u66fe\u7ecf\u8fdb\u5165\u8fc7\u5141\u8bb8\u533a\u95f4\u7684\u9875\u7801\uff08\u7528\u4e8e\u6e05\u626b\u6b8b\u7559\u5185\u5bb9\uff0c\u89c1\u7b2c 4 \u8282\u8981\u70b9 3\uff09\nvar everAllowed = new Set();\nfunction markEverAllowed() { allowedPages.forEach(function (i) { everAllowed.add(i); }); }\n\nvar pdfViewer = new PDFViewCtrl.PDFViewer({\n    libPath: '.\/lib',\n    jr: { licenseSN: licenseSN, licenseKey: licenseKey },\n    customs: {\n        PageCustomRender: (function () {\n            function CustomPageCustomRender(eCustom, pdfPageRender) {\n                this.eCustom = eCustom;\n                this.pdfPageRender = pdfPageRender;\n            }\n            CustomPageCustomRender.prototype.render = function () {\n                var self = this;\n                return self.pdfPageRender.getPDFPage().then(function (page) {\n                    var idx = page.getIndex();                     \/\/ 0 \u57fa\u9875\u7801\n                    if (!allowedPages.has(idx)) {\n                        \/\/ \u4e0d\u5728\u533a\u95f4\u5185\uff1a\u663e\u793a\u5360\u4f4d\u63d0\u793a\u5e76\u8df3\u8fc7\u8be5\u9875\u5185\u5bb9\u6e32\u67d3\n                        self.eCustom.innerHTML =\n                            '&lt;div class=\"locked-page\"&gt;\u7b2c ' + (idx + 1) + ' \u9875\u4e0d\u5728\u5f53\u524d\u5c55\u793a\u533a\u95f4\u5185&lt;\/div&gt;';\n                        return false;                              \/\/ \u2605 \u6838\u5fc3\uff1a\u8df3\u8fc7\u6e32\u67d3\n                    }\n                    \/\/ \u5728\u533a\u95f4\u5185\uff1a\u6e05\u6389\u5386\u53f2\u5360\u4f4d\uff0c\u4ea4\u8fd8 SDK \u6b63\u5e38\u6e32\u67d3\n                    if (self.eCustom.innerHTML !== '') self.eCustom.innerHTML = '';\n                });\n            };\n            CustomPageCustomRender.prototype.destroy = function () {\n                this.eCustom.innerHTML = '';\n            };\n            return CustomPageCustomRender;\n        })(),\n\n        \/\/ \u2605 \u5173\u952e\u70b9 1\uff1a\u6eda\u52a8\u5bbf\u4e3b = #pdf-viewer \u7684\u7236\u5143\u7d20\uff08\u89c1\u7b2c 4 \u8282\u8981\u70b9 1\uff09\n        ScrollWrap: PDFViewCtrl.CustomScrollWrap\n    }\n});\npdfViewer.init('#pdf-viewer');\n\n\/\/ ========== 2. \u6253\u5f00\u6587\u6863\uff08HTTP Range \u6309\u9700\u52a0\u8f7d\uff0c\u53ef\u9009\u4f46\u63a8\u8350\uff09 ==========\npdfViewer.openPDFByHttpRangeRequest(\n    { range: { url: '\/docs\/course.pdf' } },     \/\/ \u670d\u52a1\u5668\u9700\u652f\u6301 Range\/206\n    { fileName: 'course.pdf', isRenderOnDocLoaded: true }\n);\n\n\/\/ ========== 3. \u8fd0\u884c\u65f6\u52a8\u6001\u5207\u6362\u5c55\u793a\u533a\u95f4 ==========\n\/\/ \u6e05\u626b\"\u66fe\u5141\u8bb8\u3001\u73b0\u5df2\u9501\u5b9a\"\u9875\u9762\u7684\u6b8b\u7559\u5185\u5bb9\u5c42\nfunction sweepLockedPages(total) {\n    for (var i = 0; i &lt; total; i++) {\n        if (allowedPages.has(i) || !everAllowed.has(i)) continue;\n        var lay = document.querySelector('#pdf-viewer .fv__pdf-page-layout&#091;data-index=\"' + i + '\"]');\n        if (!lay) continue;\n        var pc = lay.querySelector('.fv__pdf-page-container');\n        if (pc &amp;&amp; pc.childNodes.length) pc.innerHTML = '';          \/\/ \u6e05\u6b8b\u7559 canvas\n        var custom = lay.querySelector('.fv__pdf-custom-page-container');\n        if (custom &amp;&amp; !custom.querySelector('.locked-page')) {\n            custom.innerHTML = '&lt;div class=\"locked-page\"&gt;\u7b2c ' + (i + 1) + ' \u9875\u4e0d\u5728\u5f53\u524d\u5c55\u793a\u533a\u95f4\u5185&lt;\/div&gt;';\n        }\n    }\n}\n\nfunction setVisibleRange(from, to) {       \/\/ 1 \u57fa\u95ed\u533a\u95f4\n    markEverAllowed();                     \/\/ \u8bb0\u5f55\u65e7\u533a\u95f4\n    fillRange(from, to);\n    markEverAllowed();                     \/\/ \u8bb0\u5f55\u65b0\u533a\u95f4\n    sweepLockedPages(\/* \u6587\u6863\u603b\u9875\u6570 *\/);\n\n    var doc = pdfViewer.getPDFDocRender(); \/\/ \u6ce8\u610f\uff1aPDFViewCtrl \u4e0b\u540c\u6b65\u8fd4\u56de\uff0c\u4e0d\u662f Promise\n    doc.goToPage(from - 1);\n\n    \/\/ \u2605 \u5173\u952e\u70b9 2\uff1a\u5bf9\u65b0\u533a\u95f4\u9010\u9875\u663e\u5f0f\u5f3a\u5236\u91cd\u6e32\u67d3\uff08\u89c1\u7b2c 4 \u8282\u8981\u70b9 2\uff09\n    var seq = Promise.resolve();\n    for (var i = from; i &lt;= to; i++) {\n        (function (idx0) {\n            seq = seq.then(function () {\n                var pr = doc.getPDFPageRender(idx0);\n                return pr ? pr.render().catch(function () {}) : Promise.resolve();\n            });\n        })(i - 1);\n    }\n    return seq.then(function () {\n        return doc.goToPage(from - 1);     \/\/ \u56de\u5230\u533a\u95f4\u9996\u9875\n    });\n}\n\n\/\/ \u8bb2\u5e08\u6388\u8bfe\u5230\u7b2c 3 \u7ae0\uff08\u7b2c 21-30 \u9875\uff09\uff1a\nsetVisibleRange(21, 30);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u9875\u9762\u9aa8\u67b6\uff08\u6ce8\u610f\u6eda\u52a8\u5bb9\u5668\u5173\u7cfb\uff0c\u4e0e\u5b98\u65b9 <code>load-before-rendering<\/code> \u793a\u4f8b\u4e00\u81f4\uff09\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;style&gt;\n  \/* \u6eda\u52a8\u5bb9\u5668\u662f #pdf-viewer \u7684\u7236\u5143\u7d20\uff1b\u914d\u5408 CustomScrollWrap \u4f7f\u7528 *\/\n  #viewer-scroll { width: 100%; height: 500px; overflow: auto; }\n  .locked-page { display:flex; align-items:center; justify-content:center;\n                 height:100%; color:#9ca3af; font-size:15px; }\n&lt;\/style&gt;\n&lt;div id=\"viewer-scroll\"&gt;&lt;div id=\"pdf-viewer\"&gt;&lt;\/div&gt;&lt;\/div&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u56db\u3001\u56db\u4e2a\u5fc5\u987b\u6ce8\u610f\u7684\u5173\u952e\u70b9\uff08\u8e29\u5751\u5b9e\u5f55\uff09<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u8981\u70b9 1\uff1a\u81ea\u884c\u5305\u88f9\u6eda\u52a8\u5bb9\u5668\u65f6\uff0c\u5fc5\u987b\u4f20 <code>customs.ScrollWrap = PDFViewCtrl.CustomScrollWrap<\/code><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7f3a\u7701\u7684 ScrollWrap \u76d1\u542c\u7684\u662f <strong>window\/document \u6eda\u52a8<\/strong>\u3002\u5982\u679c\u91c7\u7528&#8221;\u5916\u5c42 div\uff08overflow:auto\uff09\u5305\u4f4f <code>#pdf-viewer<\/code>&#8220;\u7684\u5e38\u89c1\u5e03\u5c40\u800c\u4e0d\u4f20\u6b64\u9879\uff0c\u5916\u5c42\u5bb9\u5668\u6eda\u52a8\u65f6 SDK \u5b8c\u5168\u611f\u77e5\u4e0d\u5230\uff0c<strong>\u9664\u9996\u5c4f\u9875\u5916\u5176\u5b83\u9875\u9762\u6c38\u8fdc\u4e0d\u4f1a\u89e6\u53d1\u6e32\u67d3<\/strong>\uff08\u8868\u73b0\u4e3a\u5927\u7247\u7a7a\u767d\u9875\uff09\u3002<code>PDFViewCtrl.CustomScrollWrap<\/code> \u4f1a\u628a\u6eda\u52a8\u5bbf\u4e3b\u8bbe\u4e3a <code>#pdf-viewer<\/code> \u7684\u7236\u5143\u7d20\uff0c\u4e0e\u5b98\u65b9\u793a\u4f8b\u4e00\u81f4\u3002\uff08UIExtension \u5168\u529f\u80fd\u6a21\u5f0f\u4e0b\u4f7f\u7528\u5176\u5185\u7f6e UI \u5e03\u5c40\u65f6\u65e0\u6b64\u95ee\u9898\u3002\uff09<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u8981\u70b9 2\uff1a\u66fe\u88ab\u9501\u5b9a\uff08render \u8fd4\u56de false\uff09\u7684\u9875\uff0c\u91cd\u65b0\u653e\u884c\u540e\u5fc5\u987b\u9010\u9875\u663e\u5f0f\u8c03\u7528 <code>PDFPageRender.render()<\/code><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9875\u9762\u4e00\u65e6\u56e0 <code>PageCustomRender.render()<\/code> \u8fd4\u56de <code>false<\/code> \u88ab\u8df3\u8fc7\uff0c\u4e4b\u540e <code>goToPage<\/code>\u3001<code>redraw(true)<\/code> \u7b49<strong>\u5e38\u89c4\u6e32\u67d3\u94fe\u8def\u4e0d\u4f1a\u91cd\u65b0\u8c03\u7528<\/strong>\u8be5\u9875\u7684 <code>PageCustomRender.render()<\/code>\uff08\u5b9e\u6d4b\u9010\u9875 <code>goToPage<\/code> \u65e0\u6cd5\u6062\u590d\uff09\u3002\u5fc5\u987b\u5bf9\u65b0\u533a\u95f4\u5185\u6bcf\u4e00\u9875\u663e\u5f0f\u8c03\u7528 <code>doc.getPDFPageRender(idx).render()<\/code> \u5f3a\u5236\u91cd\u6e32\u67d3\uff08\u89c1\u4e0a\u6587\u4ee3\u7801\uff09\u3002\u5426\u5219\u4f1a\u51fa\u73b0&#8221;\u5207\u56de\u65e7\u533a\u95f4\u540e\u9875\u9762\u4e0d\u6062\u590d&#8221;\u7684\u95ee\u9898\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u8981\u70b9 3\uff1a\u9501\u5b9a\u524d\u5df2\u6e32\u67d3\u8fc7\u7684\u9875\u9762\uff0c\u5207\u6362\u533a\u95f4\u540e\u8981\u6e05\u626b\u6b8b\u7559\u5185\u5bb9<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u88ab\u9501\u5b9a\u9875\u5728\u9501\u5b9a\u524d\u82e5\u5df2\u6e32\u67d3\u51fa\u5185\u5bb9\uff0c\u5207\u533a\u95f4\u540e\u5176 canvas \u4ecd\u4f1a\u6b8b\u7559\u5728 <code>.fv__pdf-page-container<\/code> \u4e2d\u3002\u9700\u8981\u7ef4\u62a4 <code>everAllowed<\/code>\uff08\u66fe\u7ecf\u5141\u8bb8\u8fc7\u7684\u9875\uff09\u96c6\u5408\uff0c\u5207\u6362\u540e\u5bf9&#8221;\u66fe\u5141\u8bb8\u3001\u73b0\u5df2\u9501\u5b9a&#8221;\u7684\u9875\u9762\u6e05\u9664 canvas \u5e76\u8865\u5360\u4f4d\u63d0\u793a\u3002\u6ce8\u610f\u4e0d\u8981\u628a\u65b0\u533a\u95f4\u5185&#8221;\u5c1a\u672a\u8f6e\u5230\u6e32\u67d3&#8221;\u7684\u9875\u8bef\u5224\u4e3a\u9501\u5b9a\u9875\uff08\u8fd9\u4e5f\u662f\u9700\u8981 <code>everAllowed<\/code> \u800c\u4e0d\u662f\u76f4\u63a5\u5168\u91cf\u6e05\u626b\u7684\u539f\u56e0\uff09\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u8981\u70b9 4\uff1a\u8fd9\u662f&#8221;\u6e32\u67d3\u5c42&#8221;\u63a7\u5236\uff0c\u4e0d\u7b49\u4e8e\u5185\u5bb9\u5b89\u5168<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8be5\u65b9\u6848\u53ea\u63a7\u5236<strong>\u9875\u9762\u5185\u5bb9\u662f\u5426\u6e32\u67d3<\/strong>\uff0c\u6587\u6863\u903b\u8f91\u4e0a\u6240\u6709\u9875\u90fd\u5b58\u5728\uff1a<code>getCurrentPageIndex<\/code>\u3001\u7f29\u7565\u56fe\u3001\u4e66\u7b7e\u3001\u6587\u672c\u641c\u7d22\u7b49\u4ecd\u80fd\u611f\u77e5\u5168\u90e8\u9875\u9762\u3002\u82e5\u8981\u7ed9\u7528\u6237&#8221;\u5b8c\u5168\u4e0d\u53ef\u89c1&#8221;\u7684\u4f53\u9a8c\uff0c\u9700\u518d\u5c4f\u853d\u7f29\u7565\u56fe\/\u4e66\u7b7e\/\u5bfc\u822a\/\u641c\u7d22\u5165\u53e3\u3002<\/li>\n\n\n\n<li>\u82e5\u4e1a\u52a1\u8981\u6c42<strong>\u4e25\u683c\u4e0d\u53ef\u89c1 + \u9632\u4e0b\u8f7d<\/strong>\uff08\u5982\u4ec5\u6388\u6743\u7ae0\u8282\uff09\uff0c\u63a8\u8350<strong>\u670d\u52a1\u7aef\u65b9\u6848<\/strong>\uff1a\u7528\u798f\u6615 GSDK \u9884\u5148\u628a\u539f PDF \u6309\u7ae0\u8282\u5207\u5206\u4e3a\u5b50 PDF\uff0cWeb \u7aef\u6309\u9700\u6253\u5f00\u5bf9\u5e94\u5b50\u6587\u6863\uff1b\u6216\u5bf9 PDF \u52a0\u5bc6\u5e76\u6309\u6743\u9650\u4e0b\u53d1\u3002\u6e32\u67d3\u5c42\u63a7\u5236\u9002\u5408&#8221;\u5f15\u5bfc\u89c6\u7ebf\/\u5206\u6b65\u5c55\u793a&#8221;\u7c7b\u573a\u666f\uff0c\u4e0d\u9002\u5408\u4f5c\u4e3a\u552f\u4e00\u7684\u5b89\u5168\u624b\u6bb5\u3002<\/li>\n\n\n\n<li><code>openPDFByHttpRangeRequest<\/code> \u7684\u6309\u9700\u4e0b\u8f7d\u53ea\u4f18\u5316\u4f20\u8f93\uff08chunkSize \u9ed8\u8ba4 128KB\uff0c\u6309 Range \u5206\u5757\u53d6\uff09\uff0c\u4e0d\u80fd\u9632\u6b62\u7528\u6237\u62ff\u5230\u5b8c\u6574\u6587\u4ef6\u2014\u2014\u670d\u52a1\u7aef\u4ecd\u9700\u9274\u6743\u63a7\u5236\u6587\u4ef6\u8bbf\u95ee\u3002<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e94\u3001\u53ef\u7528 API \u901f\u67e5\uff08WebSDK 11.1 \u9a8c\u8bc1\uff09<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>API<\/th><th>\u8bf4\u660e<\/th><\/tr><\/thead><tbody><tr><td><code>customs.PageCustomRender<\/code><\/td><td>\u5de5\u5382\u51fd\u6570\u8fd4\u56de\u7c7b\uff1b<code>render()<\/code> \u8fd4\u56de <code>false<\/code> \u8df3\u8fc7\u8be5\u9875\u6e32\u67d3\uff1b\u6784\u9020\u53c2\u6570 <code>eCustom<\/code>\/<code>pdfPageRender<\/code><\/td><\/tr><tr><td><code>customs.ScrollWrap: PDFViewCtrl.CustomScrollWrap<\/code><\/td><td>\u6eda\u52a8\u5bbf\u4e3b\u6539\u4e3a <code>#pdf-viewer<\/code> \u7236\u5143\u7d20\uff1b\u81ea\u5b9a\u6eda\u52a8\u5e03\u5c40\u5fc5\u4f20<\/td><\/tr><tr><td><code>pdfPageRender.getPDFPage()<\/code> \u2192 <code>page.getIndex()<\/code><\/td><td>\u5728 <code>render()<\/code> \u4e2d\u53d6\u5f53\u524d\u9875 0 \u57fa\u9875\u7801<\/td><\/tr><tr><td><code>pdfViewer.getPDFDocRender()<\/code><\/td><td>\u53d6 <code>PDFDocRender<\/code>\uff08<strong>PDFViewCtrl \u4e0b\u540c\u6b65\u8fd4\u56de<\/strong>\uff0c\u975e Promise\uff09<\/td><\/tr><tr><td><code>doc.goToPage(index)<\/code> \/ <code>doc.getCurrentPageIndex()<\/code><\/td><td>\u8df3\u9875 \/ \u8bfb\u5f53\u524d\u9875\uff080 \u57fa\uff09<\/td><\/tr><tr><td><code>doc.getPDFPageRender(idx).render()<\/code><\/td><td>\u5bf9\u6307\u5b9a\u9875\u5f3a\u5236\u91cd\u6e32\u67d3\uff08\u653e\u884c\u5df2\u9501\u5b9a\u9875\u7684\u5173\u952e\u8c03\u7528\uff1b\u975e\u6587\u6863\u5316 API\uff0c\u5347\u7ea7\u7248\u672c\u9700\u56de\u5f52\u9a8c\u8bc1\uff09<\/td><\/tr><tr><td><code>pdfViewer.redraw(force)<\/code><\/td><td>\u91cd\u7ed8\u5f53\u524d\u53ef\u89c1\u9875\uff08force=true \u540c\u65f6\u5237\u65b0\u7f13\u5b58\uff09<\/td><\/tr><tr><td><code>openPDFByHttpRangeRequest({range:{url}}, {fileName, isRenderOnDocLoaded})<\/code><\/td><td>HTTP Range \u6309\u9700\u52a0\u8f7d\u6253\u5f00\u8fdc\u7a0b\u6587\u6863\uff1b\u670d\u52a1\u5668\u9700\u652f\u6301 <code>Range<\/code>\/<code>206<\/code><\/td><\/tr><tr><td><code>ViewerEvents.renderPageSuccess \/ beforeRenderPage \/ renderFileSuccess<\/code><\/td><td>\u6e32\u67d3\u6210\u529f\/\u6e32\u67d3\u524d\/\u6587\u6863\u6e32\u67d3\u5b8c\u6210\u4e8b\u4ef6\uff08<code>viewer.eventEmitter.on<\/code>\uff09<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u6ce8\u610f\uff1aWeb \u7aef\u6ca1\u6709 Android\/iOS \u90a3\u79cd <code>onPageChanged(old, cur)<\/code> \u9875\u9762\u53d8\u5316\u4e8b\u4ef6\uff1b\u611f\u77e5\u7ffb\u9875\u53ef\u7528 <code>renderPageSuccess<\/code> \u4e8b\u4ef6 + <code>getCurrentPageIndex()<\/code> \u7ec4\u5408\uff0c\u6216\u5728\u8df3\u9875\u52a8\u4f5c\u5904\u4e3b\u52a8\u8bfb\u53d6\u3002<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">\u516d\u3001\u573a\u666f\u843d\u5730\u5efa\u8bae<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u9700\u6c42<\/th><th>\u63a8\u8350\u505a\u6cd5<\/th><\/tr><\/thead><tbody><tr><td>\u521d\u59cb\u5316\u53ea\u5c55\u793a\u7b2c 1-10 \u9875<\/td><td>\u521d\u59cb <code>fillRange(1,10)<\/code> + <code>PageCustomRender<\/code>\uff0c\u6253\u5f00\u540e\u89c6\u53e3\u5185\u53ea\u6e32\u67d3\u533a\u95f4\u5185\u9875<\/td><\/tr><tr><td>\u6388\u8bfe\u8fdb\u5ea6\u5207\u6362\u7ae0\u8282\uff08\u5982\u8df3\u7b2c 21-30 \u9875\uff09<\/td><td><code>setVisibleRange(21, 30)<\/code>\uff1a\u66f4\u65b0\u96c6\u5408 + \u6e05\u626b + \u9010\u9875 <code>PDFPageRender.render()<\/code> + <code>goToPage<\/code> \u56de\u9996\u9875<\/td><\/tr><tr><td>\u76d1\u542c\u7ffb\u9875\u8fdb\u5ea6\/\u540c\u6b65 UI<\/td><td><code>renderPageSuccess<\/code> \u4e8b\u4ef6\u91cc\u8bfb <code>getCurrentPageIndex()<\/code> \u66f4\u65b0\u8fdb\u5ea6\u6761<\/td><\/tr><tr><td>\u9501\u5b9a\u9875\u5360\u4f4d\u4f53\u9a8c<\/td><td>\u5728 <code>render()<\/code> \u4e2d\u5411 <code>eCustom<\/code> \u5199\u5360\u4f4d DOM\uff0c\u6bd4\u7559\u767d\u53cb\u597d<\/td><\/tr><tr><td>\u4e25\u683c\u4e0d\u53ef\u89c1 + \u9632\u4e0b\u8f7d<\/td><td>\u670d\u52a1\u7aef GSDK \u5207\u5206\u5b50 PDF \/ \u6587\u6863\u52a0\u5bc6+\u6743\u9650\u4e0b\u53d1\uff1b\u6e32\u67d3\u5c42\u63a7\u5236\u4ec5\u4f5c\u8f85\u52a9<\/td><\/tr><tr><td>\u5927\u6587\u4ef6\u4f20\u8f93\u4f18\u5316<\/td><td><code>openPDFByHttpRangeRequest<\/code>\uff08Range \u5206\u5757\uff0cchunkSize \u9ed8\u8ba4 128KB\uff09\uff0c\u670d\u52a1\u5668\u914d\u597d <code>Accept-Ranges<\/code>\/<code>206<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e03\u3001\u7248\u672c\u4e0e\u517c\u5bb9\u6027\u8bf4\u660e<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6587\u4e2d\u5b9e\u73b0\u57fa\u4e8e <strong>WebSDK 11.1.0<\/strong> \u7684 <code>PDFViewCtrl<\/code> \u6a21\u5757\u9a8c\u8bc1\uff1b<code>PageCustomRender<\/code> \u5728 8.1 Developer Guide \u4e0e\u5b98\u65b9\u793a\u4f8b\uff08<code>load-before-rendering<\/code>\uff09\u4e2d\u5df2\u5b58\u5728\uff0c\u5c5e\u7a33\u5b9a\u80fd\u529b\uff0c\u4f46 <strong><code>PDFPageRender.render()<\/code> \u4e3a\u975e\u6587\u6863\u5316 API<\/strong>\uff0811.1 API \u53c2\u8003\u7684 <code>PDFPageRender<\/code> \u7c7b\u9875\u9762\u672a\u5217\u51fa\uff09\uff0c\u5347\u7ea7 SDK \u7248\u672c\u65f6\u8bf7\u5bf9\u672c\u529f\u80fd\u505a\u56de\u5f52\u9a8c\u8bc1\u3002<\/li>\n\n\n\n<li>UIExtension\uff08\u5168\u529f\u80fd UI\uff09\u6a21\u5f0f\uff1a\u5b8c\u6574\u7528\u6cd5\u89c1\u4e0b\u65b9\u300cUIExtension\uff08PDFUI\uff09\u6a21\u5f0f\u7684\u5dee\u5f02\u300d\uff0c\u540c\u6837\u9a8c\u8bc1\u901a\u8fc7\uff086 \u9879\u5168\u8fc7\uff0c\u538b\u6d4b 50 \u6b21 0 \u5931\u8d25\uff09\u3002<\/li>\n\n\n\n<li>\u5b8c\u6574\u53ef\u8fd0\u884c\u9a8c\u8bc1\u5de5\u7a0b\uff08\u542b\u81ea\u52a8\u5316 6 \u9879\u9a8c\u8bc1\u811a\u672c\uff09\u89c1\u5185\u90e8\u6863\u6848 <code>IS-006-web-pagerange-customrender<\/code>\u3002<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u516b\u3001UIExtension\uff08PDFUI\uff09\u6a21\u5f0f\u7684\u5dee\u5f02\u4e0e\u5b8c\u6574\u793a\u4f8b<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">UIExtension \u5168\u529f\u80fd UI \u6a21\u5f0f\u4e0b\uff0c\u65b9\u6848<strong>\u540c\u6837\u9002\u7528\u4e14\u9a8c\u8bc1\u901a\u8fc7<\/strong>\uff08WebSDK 11.1.0 \/ <code>index-pdfui.html<\/code> \/ <code>run-repro-pdfui.mjs<\/code>\uff1a\u521d\u59cb\u5316\u9650 1-10 \u9875\u3001\u4e09\u6bb5\u533a\u95f4\u5207\u6362\u3001\u533a\u95f4\u56de\u5207\u6062\u590d\u300150 \u6b21\u8fde\u7eed\u5207\u6362 0 \u5931\u8d25\u3001\u8df3\u9875+\u653e\u884c\u8054\u52a8 \u5168\u90e8 \u2705\uff09\u3002\u4e0e\u88f8 <code>PDFViewer<\/code> \u6a21\u5f0f\u6709\u4ee5\u4e0b\u5173\u952e\u5dee\u5f02\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u5dee\u5f02\u70b9<\/th><th>\u88f8 PDFViewer<\/th><th>UIExtension.PDFUI<\/th><\/tr><\/thead><tbody><tr><td><code>customs<\/code> \u4f20\u5165\u5c42\u7ea7<\/td><td><code>new PDFViewer({ customs: {...} })<\/code><\/td><td><code>new PDFUI({ viewerOptions: { customs: {...} } })<\/code><\/td><\/tr><tr><td><code>ScrollWrap<\/code><\/td><td><strong>\u5fc5\u987b\u663e\u5f0f\u4f20<\/strong> <code>PDFViewCtrl.CustomScrollWrap<\/code>\uff08\u81ea\u5b9a\u6eda\u52a8\u5e03\u5c40\u65f6\u9700\u8981\uff09<\/td><td><strong>\u4e0d\u8981\u4f20<\/strong> \u2014\u2014 PDFUI \u7684 <code>constructPDFViewer<\/code> \u4f1a\u81ea\u52a8\u7528 UI \u5bb9\u5668\u521b\u5efa\u6eda\u52a8\u5bbf\u4e3b\uff08lib \u53d6\u8bc1\uff1a<code>i.ScrollWrap||(i.ScrollWrap=Gx.Z.create(this.wrapperElement))<\/code>\uff09\uff0c\u81ea\u5e26\u5185\u7f6e\u6eda\u52a8\u5e03\u5c40<\/td><\/tr><tr><td>\u6253\u5f00\u6587\u6863<\/td><td><code>pdfViewer.openPDFByHttpRangeRequest(...)<\/code><\/td><td><code>pdfui.openPDFByHttpRangeRequest(...)<\/code>\uff08\u76f4\u63a5\u5728 PDFUI \u5b9e\u4f8b\u4e0a\u8c03\u7528\uff0c\u5185\u90e8\u8f6c\u53d1\u7ed9 viewer\uff09<\/td><\/tr><tr><td>\u53d6 PDFViewer \/ PDFDocRender<\/td><td><code>pdfViewer.getPDFDocRender()<\/code>\uff08\u540c\u6b65\uff09<\/td><td><code>await pdfui.getPDFViewer()<\/code>\uff08<strong>Promise<\/strong>\uff09\u2192 <code>viewer.getPDFDocRender()<\/code>\uff08\u540c\u6b65\uff09<\/td><\/tr><tr><td>\u4e8b\u4ef6\u8ba2\u9605<\/td><td><code>pdfViewer.eventEmitter.on(ViewerEvents.xxx, fn)<\/code><\/td><td>\u540c\uff08\u62ff\u5230 viewer \u5b9e\u4f8b\u540e\u4ecd\u7528 <code>viewer.eventEmitter<\/code>\uff09\uff0c\u53e6\u6709 <code>pdfui.addViewerEventListener(type, fn)<\/code> \u4fbf\u6377\u63a5\u53e3<\/td><\/tr><tr><td>\u52a0\u8f7d\u6587\u4ef6<\/td><td><code>lib\/PDFViewCtrl.full.js<\/code> + PDFViewCtrl.css<\/td><td><code>lib\/UIExtension.full.js<\/code> + UIExtension.css\uff0c\u987b\u52a0\u8f7d <code>uix-addons\/allInOne.js<\/code>\uff08\u6216 mobile \u7248\uff09addons<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><code>PageCustomRender<\/code> \u94a9\u5b50\u672c\u8eab\u3001<code>render()<\/code> \u8fd4\u56de <code>false<\/code> \u8df3\u9875\u673a\u5236\u3001\u653e\u884c\u540e\u9010\u9875 <code>PDFPageRender.render()<\/code> \u6062\u590d\u3001<code>everAllowed<\/code> \u6e05\u626b\u903b\u8f91\uff0c\u5728\u4e24\u79cd\u6a21\u5f0f\u4e0b<strong>\u5b8c\u5168\u4e00\u81f4<\/strong>\uff08UIExtension lib \u4e2d\u540c\u6837\u662f <code>new(customs.PageCustomRender||\u9ed8\u8ba4)(.fv__pdf-custom-page-container, \u9875\u6e32\u67d3\u5668)<\/code> \u5b9e\u4f8b\u5316\uff09\u3002PDFUI \u6a21\u5f0f\u521d\u59cb\u5316\u4ee3\u7801\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var pdfui = new UIExtension.PDFUI({\n    viewerOptions: {\n        libPath: '.\/lib',\n        jr: { licenseSN: licenseSN, licenseKey: licenseKey },\n        customs: {\n            PageCustomRender: (function () {\n                function CustomPageCustomRender(eCustom, pdfPageRender) {\n                    this.eCustom = eCustom;\n                    this.pdfPageRender = pdfPageRender;\n                }\n                CustomPageCustomRender.prototype.render = function () {\n                    return this.pdfPageRender.getPDFPage().then(function (page) {\n                        var idx = page.getIndex();\n                        if (!allowedPages.has(idx)) {        \/\/ allowedPages \u540c\u4e3a\u95ed\u5305\u53ef\u53d8\u96c6\u5408\n                            this.eCustom.innerHTML = '&lt;div class=\"locked-page\"&gt;\u7b2c ' + (idx + 1) + ' \u9875\u4e0d\u5728\u5f53\u524d\u5c55\u793a\u533a\u95f4\u5185&lt;\/div&gt;';\n                            return false;\n                        }\n                    });\n                };\n                CustomPageCustomRender.prototype.destroy = function () { this.eCustom.innerHTML = ''; };\n                return CustomPageCustomRender;\n            })()\n            \/\/ \u6ce8\u610f\uff1a\u4e0d\u4f20 ScrollWrap\uff0cPDFUI \u4f1a\u81ea\u52a8\u521b\u5efa\n        }\n    },\n    renderTo: '#pdf-ui',\n    appearance: UIExtension.appearances.adaptive,\n    fragments: &#091;],\n    addons: UIExtension.PDFViewCtrl.DeviceInfo.isMobile ?\n        '.\/lib\/uix-addons\/allInOne.mobile.js' : '.\/lib\/uix-addons\/allInOne.js'\n});\n\n\/\/ \u6253\u5f00\u6587\u6863\uff1apdfui.openPDFByHttpRangeRequest(...)\uff08\u6216 openPDFByFile\uff09\n\/\/ \u52a8\u6001\u5207\u6362\uff1aawait pdfui.getPDFViewer() \u2192 viewer.getPDFDocRender() \u2192 \u4e0e\u88f8 PDFViewer \u76f8\u540c<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p class=\"wp-block-paragraph\"><em>\u672c\u6587\u57fa\u4e8e Foxit PDF SDK for Web 11.1.0 \u5b9e\u6d4b\u9a8c\u8bc1\u7f16\u5199\uff082026-09\uff09\u3002\u793a\u4f8b\u4e2d\u7684 <code>licenseSN<\/code>\/<code>licenseKey<\/code> \u8bf7\u66ff\u6362\u4e3a\u4f60\u81ea\u5df1\u7684\u6388\u6743\u3002<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9002\u7528\u4ea7\u54c1\uff1aFoxit PDF SDK for Web\uff08WebPDF Viewer \/ PDFViewCtrl  [&hellip;]<\/p>\n","protected":false},"author":32,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[67],"tags":[1481,1480],"class_list":["post-9300","post","type-post","status-publish","format-standard","hentry","category-websdk","tag-1481","tag-1480"],"pp_statuses_selecting_workflow":false,"pp_workflow_action":"current","pp_status_selection":"publish","_links":{"self":[{"href":"https:\/\/support.fuxinsoft.cn\/index.php?rest_route=\/wp\/v2\/posts\/9300","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/support.fuxinsoft.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/support.fuxinsoft.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/support.fuxinsoft.cn\/index.php?rest_route=\/wp\/v2\/users\/32"}],"replies":[{"embeddable":true,"href":"https:\/\/support.fuxinsoft.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9300"}],"version-history":[{"count":1,"href":"https:\/\/support.fuxinsoft.cn\/index.php?rest_route=\/wp\/v2\/posts\/9300\/revisions"}],"predecessor-version":[{"id":9302,"href":"https:\/\/support.fuxinsoft.cn\/index.php?rest_route=\/wp\/v2\/posts\/9300\/revisions\/9302"}],"wp:attachment":[{"href":"https:\/\/support.fuxinsoft.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9300"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/support.fuxinsoft.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=9300"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/support.fuxinsoft.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=9300"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}