最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

前端實現(xiàn)pdf文件預覽的操作步驟方法

 更新時間:2025年07月10日 09:41:33   作者:Zhang_DongL  
這篇文章主要介紹了前端實現(xiàn)pdf文件預覽的操作步驟方法,前端實現(xiàn)PDF文件流預覽可以使用多種方法,其中一種常用的方法是使用PDF.js庫,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

1. 使用 PDF.js 進行自定義預覽

PDF.js 是一個用 JavaScript 實現(xiàn)的 PDF 閱讀器,可以嵌入到網(wǎng)頁中進行 PDF 文件的預覽,并且可以自定義其功能。

步驟如下:

1. 引入 PDF.js 庫

import pdfjsLib from 'pdfjs-dist';
import 'pdfjs-dist/web/pdf_viewer';

2. 創(chuàng)建 PDF 預覽組件

import React, { useEffect, useRef } from 'react';
import pdfjsLib from 'pdfjs-dist';
import 'pdfjs-dist/web/pdf_viewer';

const PdfPreview = ({ url }) => {
    const pdfContainer = useRef(null);

    useEffect(() => {
        // 配置 PDF.js
        pdfjsLib.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjsLib.version}/pdf.worker.js`;

        // 加載 PDF
        const loadingTask = pdfjsLib.getDocument(url);
        loadingTask.promise.then((pdf) => {
            // 獲取第一頁
            pdf.getPage(1).then((page) => {
                const viewport = page.getViewport({ scale: 1.5 });
                const canvas = document.createElement('canvas');
                const context = canvas.getContext('2d');

                canvas.height = viewport.height;
                canvas.width = viewport.width;

                const renderContext = {
                    canvasContext: context,
                    viewport: viewport
                };

                page.render(renderContext).promise.then(() => {
                    pdfContainer.current.appendChild(canvas);
                });
            });
        });
    }, [url]);

    return <div ref={pdfContainer} style={{ width: '100%', height: '600px' }}></div>;
};

export default PdfPreview;

3. 使用

if (record.name.endsWith('.pdf')) {
    const baseUrl = new URL(API_BASE_URL_PRO).origin;
    const fileUrl = `${baseUrl.replace(/:\d+$/, ':3100')}/api/common/file/download?fileId=${record.fileId}&bucketName=dataset`;

    const previewModal = Modal.info({
        title: (
            <>
                文件預覽
                <span
                    style={{ fontSize: '14px', textDecoration: 'underline', marginLeft: '15px' }}
                >
                    {record.name}
                </span>
            </>
        ),
        content: <PdfPreview url={fileUrl} />,
        footer: null,
        width: '75%',
        style: { top: 35 },
        closable: true,
        onCancel: () => previewModal.destroy(),
    });

    return;
}

2. 使用 iframe 嵌入并自定義參數(shù)

如果不想使用 PDF.js,也可以通過 iframe 嵌入 PDF 文件,并通過特定參數(shù)來禁用下載功能。

步驟如下:

當檢測到文件為 PDF 時,使用 iframe 進行嵌入,并添加 #toolbar=0 參數(shù)來禁用工具欄(包括下載按鈕)。

if (record.name.endsWith('.pdf')) {
    const pdfFileUrl= new URL(API_BASE_URL_PRO).origin;
    // window.open(pdfFileUrl, '_blank'); 或者使用打開新窗口方式
    const fileUrl = `${baseUrl.replace(/:\d+$/, ':3100')}/api/common/file/download?fileId=${record.fileId}&bucketName=dataset#toolbar=0`;

    const previewModal = Modal.info({
        title: (
            <>
                文件預覽
                <span
                    style={{ fontSize: '14px', textDecoration: 'underline', marginLeft: '15px' }}
                >
                    {record.name}
                </span>
            </>
        ),
        content: (
            <iframe
                src={pdfFileUrl}
                style={{ width: '100%', height: '600px', border: 'none' }}
            ></iframe>
        ),
        footer: null,
        width: '75%',
        style: { top: 35 },
        closable: true,
        onCancel: () => previewModal.destroy(),
    });

    return;
}

選擇適合你項目需求的方法進行實現(xiàn)即可。如果你希望有更高的定制性和更好的用戶體驗,推薦使用 PDF.js。如果你希望實現(xiàn)簡單快捷,可以選擇 iframe 方法。

總結(jié)

到此這篇關于前端實現(xiàn)pdf文件預覽操作步驟方法的文章就介紹到這了,更多相關前端pdf文件預覽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • js保存當前路徑(cookies記錄)

    js保存當前路徑(cookies記錄)

    曾經(jīng)做了一個取消訂單的功能。這個功能在個人中心里面有,在訂單的詳細頁面也有。按照正常的思路,這兩塊都可以提交到相同的action去處理,但是返回的頁面是不一樣的,都是返回到當前頁面就可以了。
    2010-12-12
  • JavaScript實現(xiàn)動態(tài)表單生成

    JavaScript實現(xiàn)動態(tài)表單生成

    這篇文章主要來和大家一起深入探討如何使用JavaScript實現(xiàn)一個動態(tài)表單生成器,文中的示例代碼講解詳細,有需要的小伙伴可以參考一下
    2024-01-01
  • js用于樹型結(jié)構級聯(lián)選擇

    js用于樹型結(jié)構級聯(lián)選擇

    js用于樹型結(jié)構級聯(lián)選擇...
    2007-01-01
  • JS TextArea字符串長度限制代碼集合

    JS TextArea字符串長度限制代碼集合

    因為業(yè)務需求 今天做了一個textarea文本域字符串長度限制的方法,其實網(wǎng)上已經(jīng)有了很多相關的解決方案,但在輸入日語時,在IE存在BUG,我的這個版本就是針對這種情況的
    2012-10-10
  • JavaScript數(shù)據(jù)結(jié)構之單鏈表和循環(huán)鏈表

    JavaScript數(shù)據(jù)結(jié)構之單鏈表和循環(huán)鏈表

    這篇文章主要介紹了JavaScript數(shù)據(jù)結(jié)構之單鏈表、循環(huán)鏈表,詳細的介紹了JavaScript如何實現(xiàn)單鏈表、循環(huán)鏈表,有興趣的可以了解一下
    2017-11-11
  • JavaScript中的Array對象使用說明

    JavaScript中的Array對象使用說明

    JavaScript中的Array對象是一個動態(tài)的數(shù)組,也是一個Stack,還是一個Dictionary
    2011-01-01
  • uni-app設置緩存過期時間的操作方法

    uni-app設置緩存過期時間的操作方法

    uni-app 是一個使用 Vue.js 開發(fā)所有前端應用的框架,開發(fā)者編寫一套代碼,可發(fā)布到iOS、Android、Web(響應式)、以及各種小程序,本文給大家介紹了uni-app設置緩存過期時間的操作方法,需要的朋友可以參考下
    2024-12-12
  • JavaScript原型繼承_動力節(jié)點Java學院整理

    JavaScript原型繼承_動力節(jié)點Java學院整理

    這篇文章主要為大家詳細介紹了JavaScript原型繼承的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • JS?Angular?服務器端渲染應用設置渲染超時時間???????

    JS?Angular?服務器端渲染應用設置渲染超時時間???????

    這篇文章主要介紹了JS?Angular服務器端渲染應用設置渲染超時時間,???????通過setTimeout模擬一個需要5秒鐘才能完成調(diào)用的API展開詳情,需要的小伙伴可以參考一下
    2022-06-06
  • 移動端腳本框架Hammer.js

    移動端腳本框架Hammer.js

    這篇文章主要為大家詳細介紹了一款開源的移動端腳本框架Hammer.js,可以完美的實現(xiàn)在移端開發(fā)的大多數(shù)事件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12

最新評論

湘潭市| 吕梁市| 义乌市| 安平县| 萨迦县| 镇巴县| 宜良县| 枞阳县| 板桥市| 南投市| 兴山县| 霍山县| 长白| 察隅县| 师宗县| 柘荣县| 彭山县| 囊谦县| 阳高县| 台州市| 溧水县| 临沧市| 广汉市| 达州市| 威信县| 都兰县| 冕宁县| 德阳市| 虞城县| 巨野县| 盖州市| 景洪市| 灌云县| 拜城县| 丰台区| 大英县| 友谊县| 遵义县| 胶南市| 沈阳市| 祁东县|