当前位置: 首页 > news >正文

React+Next项目中实现PDF预览功能

目录

一、在page文件夹下创建 PDF组件

二、点击传递PDF的路径并跳转 


一、在page文件夹下创建 PDF组件

import { useRouter } from 'next/router';
import styles from '../styles/Pdf.module.css'; // 使用 CSS Modules

const PdfPreviewPage = () => {
  const router = useRouter();
  const { file } = router.query;

  // 确保 file 是字符串类型
  const pdfUrl = typeof file === 'string' ? file : '';

  return (
    <div>{pdfUrl ? <iframe src={pdfUrl} className={styles.pdfPreview} /> : <p>PDF 文件路径无效或未提供。</p>}</div>
  );
};

export default PdfPreviewPage;
  • useRouter() 获取当前的路由对象 router,通过 router.query 可以访问 URL 中的查询参数。
  • 从 router.query 中解构出 file 参数,它代表了 PDF 文件的路径。
  • 对 file 进行类型检查,确保它是字符串类型,将其赋值给 pdfUrl
  • 在返回的 JSX 中,通过条件渲染判断 pdfUrl 是否有值。如果有值,则使用 <iframe> 标签,将 pdfUrl 作为 src 属性值,这样浏览器会尝试在该 iframe 中加载并预览 PDF 文件;如果没有值,则显示提示文本 “PDF 文件路径无效或未提供。” 。

二、点击传递PDF的路径并跳转 

 <div className={styles.downloadCatalogBtn} onClick={handleDownloadCatalog}>
              <span>下载目录</span>
              <img src="/images/2.svg" alt="" />
 </div>

  const handleDownloadCatalog = () => {
    // 假设你的 PDF 文件名为 'produc.pdf',存放在 public 文件夹中
    const pdfPath = product.pdf;
    // 跳转到 PDF 预览页面
    router.push(`/pdf-preview?file=${encodeURIComponent(pdfPath)}`);
  };

成果展示 :

    相关文章:

  • uniapp自身bug | uniapp+vue3打包后 index.html无法直接运行
  • 编写一个简单的chrome截图扩展
  • 二叉树leetcodeJAVA2
  • 统信UOS中使用Vscode编程
  • (四)---四元数的基础知识-(定义)-(乘法)-(逆)-(退化到二维复平面)
  • 如何把master迁出的bug修改分支,合并、删除本地、删除远端
  • 服务安全认证概述与基础认证方式
  • Haption Virtuose力反馈设备在CAVE投影系统中提供真实训练交互
  • 金融级安全加速:群联SD-WAN如何兼顾防御与低延迟?
  • vue中根据html动态渲染内容
  • LeetCode hot 100 每日一题(11)——189. 轮转数组
  • 汇编与反汇编:DEBUG 命令使用指南
  • 万户协同办公平台ezOffice selectCommentField 存在 SQL 注入漏洞(DVB-2025-8941)
  • sqlserver 数据日常维护
  • 使用【docker】+【shell】脚本半自动化部署微服务项目
  • 每日OJ_牛客_小红的子串_滑动窗口+前缀和_C++_Java
  • vue3中如何实现路由导航跳转
  • [数据结构]排序之 归并排序(有详细的递归图解)
  • Python 监听模式(Observer Pattern)
  • Java面试黄金宝典6
  • 印巴战火LIVE丨“快速接近战争状态”?印度袭击巴军事基地,巴启动反制军事行动
  • 洗冤录|县令遇豪强:黄榦处理的一起地产纠纷案
  • 欧洲史上最严重停电事故敲响警钟:能源转型如何保证电网稳定?
  • 河南省省长王凯在郑州调研促消费工作,走访蜜雪冰城总部
  • 甘肃省政府原副省长赵金云被决定逮捕
  • “上海之帆”巡展在日本大阪开幕,松江区组织企业集体出展