Remember to install vue-pdf-embed first;
https://github.com/hrynko/vue-pdf-embed
npm install vue-pdf-embed
yarn add vue-pdf-embed
<script src="https://unpkg.com/vue-pdf-embed"></script>
Remember to install vue-pdf-embed first;
https://github.com/hrynko/vue-pdf-embed
npm install vue-pdf-embed
yarn add vue-pdf-embed
<script src="https://unpkg.com/vue-pdf-embed"></script>
| <template> | |
| <div class="row pe-0"> | |
| <div class="col pe-0"> | |
| <vue-pdf-embed | |
| class="border p-0 rounded-3 overflow-hidden" | |
| ref="pdfRef" | |
| :source="source" | |
| :page="page.current" | |
| @rendered="handleDocumentRender" | |
| /> | |
| </div> | |
| </div> | |
| <div class="row text-center py-3" v-if="page.loaded"> | |
| <div class="col"> | |
| <button | |
| :disabled="page.current <= 1" @click="page.current--" | |
| class="btn btn-sm btn-rounded-circle btn-primary"> | |
| <i class="fa-regular fa-chevrons-left"></i> | |
| </button> | |
| <span class="text-muted px-3">{{ page.current }} / {{ page.count }}</span> | |
| <button | |
| :disabled="page.current >= page.count" @click="page.current++" | |
| class="btn btn-sm btn-rounded-circle btn-primary"> | |
| <i class="fa-regular fa-chevrons-right"></i> | |
| </button> | |
| </div> | |
| </div> | |
| </template> | |
| <script setup> | |
| import VuePdfEmbed from 'vue-pdf-embed' | |
| import {reactive, ref} from "vue"; | |
| let props = defineProps({ | |
| source: String, | |
| }); | |
| const pdfRef = ref(null); | |
| let page = reactive([]) | |
| page.current = 1; | |
| page.count = 1; | |
| page.loaded = false; | |
| function handleDocumentRender() { | |
| page.count = pdfRef.value.pageCount | |
| page.loaded = true; | |
| }; | |
| </script> |