pdf预览兼容问题- chrome浏览器105及一下预览不了

使用的"@tato30/vue-pdf": "^1.11.2"预览插件,发现chrome浏览器105及一下预览不了

pdfPreview预览组件:

html 复制代码
<template>
  <div id="vue_pdf_view">
    <div class="tool_tip">
      <template v-if="pages > 0 && props.previewMode === 'pagination'">
        <button @click="page = page > 1 ? page - 1 : page">上一页</button>
        <span>{{ page }} / {{ pages }}</span>
        <button @click="page = page < pages ? page + 1 : page">下一页</button>
      </template>
      <button @click="handleWord" v-if="fetchWordApi && uniEventId">
        下载word
      </button>
      <button @click="handlePdf" v-if="src && uniEventId">下载PDF</button>
    </div>
    <template v-if="!props.loading && props.previewMode === 'scroll'">
      <div v-for="page in pages" :key="page" class="page">
        <VuePDF :pdf="pdf" :page="page" :scale="scale" />
      </div>
    </template>
    <template v-else-if="!props.loading && props.previewMode === 'pagination'">
      <VuePDF :pdf="pdf" :page="page" />
    </template>
    <template v-else>
      <Spin style="padding-top: 50px"></Spin>
    </template>
  </div>
</template>

<script setup>
import { onMounted, ref } from 'vue';
import { VuePDF, usePDF } from '@tato30/vue-pdf';
import { Spin } from 'ant-design-vue';
import { saveAs } from 'file-saver';

const props = defineProps({
  src: {
    type: String,
  },
  fetchWordApi: {
    type: Function,
  },
  uniEventId: {
    type: String,
  },
  previewMode: {
    // 'pagination','scroll'
    type: String,
    default: 'scroll',
  },
  loading: {
    type: Boolean,
    default: false,
  },
});

const page = ref(1);
const testSrc =
  'https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf';
const { src, fetchWordApi, uniEventId } = props;
const { pdf, pages } = usePDF(src);
const scale = ref(1.5);
const handleWord = () => {
  fetchWordApi &&
    fetchWordApi('docx', { uniEventId }, true).then((res) => {
      const blob = new Blob([res], { type: 'application/msword' });
      saveAs(blob, uniEventId + '.docx');
    });
};

const handlePdf = () => {
  if (!src || !uniEventId) return;
  saveAs(src, uniEventId + '.pdf');
};
</script>

<style lang="scss">
#vue_pdf_view {
  min-height: 1000px;
  width: 100%;
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  &:hover {
    .tool_tip {
      opacity: 1;
    }
  }
  .tool_tip {
    opacity: 0;
    position: sticky;
    top: 40px;
    left: 0;
    background-color: rgba(0, 0, 0, 0.5);
    z-index: 1;
    padding: 4px 0;
    border-radius: 4px;
    width: fit-content;
    button {
      padding: 0 10px;
      &:hover {
        color: #555;
      }
    }
  }
  .page {
    padding-bottom: 10px;
  }
}
</style>

使用:

html 复制代码
<pdfPreview
        :loading="loading"
        :key="loading"
        :src="iframeUrl"
        previewMode="scroll"
      ></pdfPreview> 

解决:直接使用iframe的src嵌套pdf即可解决兼容问题

html 复制代码
      <iframe
        :src="`${iframeUrl}#toolbar=0`"
        width="100%"
        height="800px"
        frameBorder="0"
        scrolling="no"
        v-if="loading"
      ></iframe>
相关推荐
守城小轩16 小时前
Ungoogled Chromium127编译指南 Linux篇 - Docker简介(五)
chrome·chrome devtools·指纹浏览器·浏览器开发·ungoogled
守城小轩1 天前
Ungoogled Chromium127 编译指南 MacOS 篇(二)- 项目要求
chrome·chrome devtools·指纹浏览器·浏览器开发·ungoogled
alden_ygq1 天前
Shell脚本编程的实用技巧和最佳实践
前端·chrome
问道飞鱼1 天前
【Linux知识】shell编程知识科普
linux·运维·chrome·shell
进击的雷神1 天前
SpiderFlow平台v0.5.0内置变量及自定义函数
前端·chrome·spiderflow
守城小轩2 天前
Ungoogled Chromium127 编译指南 MacOS篇(三)- 安装Xcode
chrome·chrome devtools·指纹浏览器·浏览器开发·ungoogled
阿正的梦工坊2 天前
Bash 中的 2>&1 | tee 命令详解
开发语言·chrome·bash
守城小轩3 天前
Ungoogled Chromium127 编译指南 MacOS 篇(一)- 项目介绍
chrome·chrome devtools·指纹浏览器·浏览器开发·ungoogled
GLAB-Mary4 天前
了解行处理工具:grep 、cut 、sort、uniq 、tee 、diff 、paste 、tr
linux·前端·chrome