首页 > 其他分享 >基于[email protected]的Vue3 PDF在线预览

基于[email protected]的Vue3 PDF在线预览

时间:2023-11-06 17:49:07浏览次数:43  
标签:vue 1.0 string app vue3 props pdf

目录

本文参考来自于 CSDN作者theMuseCatcher《Vue3PDF预览(vue3-pdf-app)》

认识vue3-pdf-app

vue3-pdf-app的npm官方链接 点我访问

vue3-pdf-app的github仓库 点我访问

安装vue3-pdf-app

npm i [email protected]

代码

子组件封装: PdfView.vue

<template>
  <!-- viewer.properties: 该文件为PDF插件的中文版配置,放置本地或使用服务器网络地址 -->
  <link rel="resource" type="application/l10n" href="/viewer.properties" />
  <VuePdfApp
    :page-scale="pageScale"
    :theme="theme"
    :style="`width: ${viewerWidth}; height: ${viewerHeight};`"
    :pdf="src"
    :file-name="fileName"
    v-bind="$attrs"
    @pages-rendered="pagesRendered"></VuePdfApp>
</template>

<script setup lang="ts">
import { computed } from 'vue';
import VuePdfApp from 'vue3-pdf-app';
import 'vue3-pdf-app/dist/icons/main.css'; // 引入样式
interface Props {
  src: string; // pdf地址
  width?: string | number; // 预览容器宽度
  height?: string | number; // 预览容器高度
  pageScale?: number | string; // 页面默认缩放规则,可选 'page-actual'|'page-width'|'page-height'|'page-fit'|'auto'
  theme?: string; // 预览主题 可选 dark | light
  fileName?: string; // 覆盖pdf文件名
}
const props = withDefaults(defineProps<Props>(), {
  src: '',
  width: '100%',
  height: '100vh',
  pageScale: 'page-fit', // 默认自适应展示一页
  theme: 'light',
  fileName: ''
});
const viewerWidth = computed(() => {
  if (typeof props.width === 'number') {
    return props.width + 'px';
  } else {
    return props.width;
  }
});
const viewerHeight = computed(() => {
  if (typeof props.height === 'number') {
    return props.height + 'px';
  } else {
    return props.height;
  }
});
const emit = defineEmits(['loaded']);
// emitted when pdf document pages are rendered. Can be used to set default pages scale
function pagesRendered(pdfApp: any) {
  console.log('pagesRendered pdfApp:', pdfApp);
  emit('loaded', pdfApp);
}
</script>

父组件调用: index.vue

<template>
  <pdf-view page-scale="page-fit" width="100%" height="100%" :src="pdfShowSrc" @loaded="onLoaded" />
</template>

<script setup lang="ts">
import { ref } from 'vue';
import PdfView from './PdfView.vue';

// 在线地址或本地地址
const pdfShowSrc= ref('/Pdf文件.pdf');
</script>

中文配置文件viewer.properties

因为pdf.js插件更新,pdfjs官网的中文国际化文件已不可用,请下载下面链接的文件解压后获取中文配置文件,放入 <link rel="resource" type="application/l10n" href="/viewer.properties" />中href的地址。

标签:vue,1.0,string,app,vue3,props,pdf
From: https://www.cnblogs.com/lzb1234/p/17813250.html

相关文章

  • 域名在线打包生成APP的优势
    大家好,凯撒又来更新了,现在这个互联网社会移动应用已经成为企业和个人不可或缺的工具,但是对于没有专业编程技能的人来说,开发一个功能完善的移动应用可能还是比较艰巨的。现在有一种更简便快捷的方式那就是使用域名在线打包生成APP。那域名在线打包有哪些优势呢。      ......
  • vue3.0 + ts 实现上传工厂(oss与cos)
    概述将上传基类命名为MOS(MineObjectStorage)mos.ts代码import{MosType}from'./mosConfig'import{Loading}from'../loading'import{typeBinaryFile,typeMosFile}from'./fileUtil'importtype{PathTemplate}from'./pathTempla......
  • 获取小程序appid和path教程详细版
    打开你需要获取appid的小程序,这里以“饿了么”小程序为例,然后点击右上角的图标以下为小程序path获取方法登录你的小程序的微信公众平台https://mp.weixin.qq.com点击右上角的工具,进入后是下面的页面然后用你输入的微信号微信浏览“饿了么”小程序,浏览到你要获取path的页面,点......
  • uniapp+微信小程序 激励广告
    防忘首先在onready里面准备好代码 包括广告准备就绪 准备出错,广告关闭data(){return{showAd:false,canShowAd:false,rewardedVideoAd:null,}},onReady()......
  • 配置使用百度地图时出现:APP Referer校验失败。请检查该ak设置的白名单与访问所有的域
    如果是个人内部测试使用,直接将IP白名单设置为*  ......
  • 使用uniapp开发小程序getLocation报错
    uniapp中使用uni.getLocation()报错,报错如下:getLocation:failtheapineedtobedeclaredintherequiredPrivateInfosfieldinapp.json/ext.json 首先检查uniapp的manifest文件发现位置权限已经开启: 后翻阅微信文档后发现原来是微信官方做了调整,uniapp只勾选这个还......
  • 超级App开发新指南:轻应用助力app崛起
    一、什么是轻应用LAPP(LightApp)即轻应用是一种无需下载、即搜即用的全功能App,既有媲美甚至超越nativeapp的用户体验,又具备webapp的可被检索与智能分发的特性,将有效解决优质应用和服务与移动用户需求对接的问题。2013年8月22日,百度在2013年百度世界大会上宣布推出“轻应用......
  • node.js快死了!Bun 1.0 正在改变 JavaScript 游戏规则
    在进一步讨论之前,我们需要解释什么是javascript运行时以及为什么我们应该关心它的速度。 想象一下,你用JavaScript写了一个故事,你需要有人大声朗读。JavaScript运行时就像那个友好的叙述者,让你的故事栩栩如生!这是一个特殊的环境,你的JavaScript故事被阅读和表演出来。但是,让我......
  • 电子游戏力作:《钢铁誓言》1.0正式版更新,掀起RPG热潮
    PG游戏库-公司:CuriousPandaGames和HumbleGames合作开发的回合制战略RPG游戏《TheIronOath》已经迈向了新的高度。这款游戏于2022年4月首次登陆Steam的抢先体验版本,如今正式推出1.0版本,为PGSOFT游戏攻略玩家带来了更多令人兴奋的内容。1.0正式版不仅包含了新的主线战役剧情,......
  • Microsoft 365 开发:AI builder是如何与 Power Apps集成可以让使用 AI 变得容易
    Blog链接:https://blog.51cto.com/13969817AIBuilder是一项MicrosoftPowerPlatform功能,无需任何定制开发或者coding,就可可提供专门用于优化您的业务流程的AI模型。说明:AI中的部分功能尚未发布,仍旧处于预览状态。MicrosoftPowerPlatform包括5个主要组件,用于不同的用途,不同......