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)}`);
  };

成果展示 :

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值