pdfShow.ts
990 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://test-alterego.oss-cn-qingdao.aliyuncs.com', '/aliyun-oss-pdf');
}
downloadAndPreviewPDF(url);
};