pdfShow.ts 985 Bytes
import { getAppEnvConfig } from '/@/utils/env';

export async function downloadAndPreviewPDF(url) {
  try {
    // 使用 fetch 下载 PDF 数据
    const response = await fetch(url);
    if (!response.ok) throw new Error('PDF 下载失败');

    // 转换为 Blob
    const pdfBlob = await response.blob();

    // 创建 Blob URL
    const blobUrl = URL.createObjectURL(pdfBlob);

    // 创建一个新窗口或iframe来预览 PDF
    const pdfWindow = window.open(blobUrl, '_blank');
    if (!pdfWindow) {
      console.error('弹出窗口被阻止,无法预览 PDF');
    }

    // 可以在不需要时释放 Blob URL
    pdfWindow.onunload = () => URL.revokeObjectURL(blobUrl);
  } catch (error) {
    console.error('出现错误:', error);
  }
}
export const view = (url) => {
  const { VITE_ALIYUN_OSS_DOMAIN } = getAppEnvConfig();
  if (url) {
    url = url.replace('https://alterego.oss-cn-qingdao.aliyuncs.com', '/aliyun-oss-pdf');
  }
  downloadAndPreviewPDF(url);
};