ruoyi-geek-App/uni_modules/uview-plus/components/u-pdf-reader/u-pdf-reader.vue

52 lines
1.6 KiB
Vue
Raw Normal View History

2025-11-24 14:57:53 +00:00
<template>
<view class="up-pdf-reader" :style="{ height: height }">
<web-view :fullscreen="false"
:src="viewerUrl" :style="{ width: '750rpx', height: height }"
:webview-styles="{ width: '750rpx', height: height }"
frameborder="0"
></web-view>
</view>
</template>
<script>
import props from './props.js';
/**
* pdfReader PDF阅读器
* @description 基于pdf.js的PDF阅读器组件
* @tutorial https://uview-plus.jiangruyi.com/components/pdfReader.html
* @property {String} src PDF文件地址
* @property {String} height 组件高度默认为'700px'
* @property {String} pdfjsDomain pdfjs资源域名默认为'https://uview-plus.jiangruyi.com/h5'
* @example <up-pdf-reader src="https://example.com/file.pdf"></up-pdf-reader>
*/
export default {
name: 'up-pdf-reader',
mixins: [props],
data() {
return {
baseUrlInner: 'https://uview-plus.jiangruyi.com/h5',
viewerUrl: ''
}
},
watch: {
baseUrl: function (val) {
this.baseUrl = val;
},
src: function (val) {
this.viewerUrl = `${this.baseUrlInner}/static/pdfjs/web/viewer.html?file=` + encodeURIComponent(val);
}
},
mounted() {
if (this.baseUrl) {
this.baseUrlInner = this.baseUrl;
}
this.viewerUrl = `${this.baseUrlInner}/static/pdfjs/web/viewer.html?file=` + encodeURIComponent(this.src);
}
}
</script>
<style lang="scss" scoped>
.up-pdf-reader {
}
</style>