Download Controller >=1.8.0
downloadControl
Name | Description | Type |
---|---|---|
download | To initiate the download process. | () => Awaited<void> |
onComplete | (optional) A callback function that is triggered when the download is completed successfully and the PDF file is downloaded. | () => void |
onError | (optional) A callback function that is triggered when an error occurs during the download process. It is called with an Error object that describes what went wrong. | (error: Error) => void |
Example
vue
<script setup lang="ts">
import { VPdfViewer } from '@vue-pdf-viewer/viewer'
import { ref, computed, watch, unref } from 'vue'
// Create a ref to hold the VPdfViewer component
const vpvRef = ref<InstanceType<typeof VPdfViewer>>()
const downloadControl = computed(() => vpvRef.value?.downloadControl)
const downloadFile = () => {
const downloadCtrl = unref(downloadControl)
if(!downloadCtrl) return
downloadCtrl.download()
}
watch(downloadControl, (downloadCtrl) => {
if (!downloadCtrl) return
downloadCtrl.onError = (error) => {
console.log('Download error', error)
}
downloadCtrl.onComplete = () => {
console.log('Download completed')
}
})
</script>
<template>
<div id="vpv">
<div>
<button @click="downloadFile">Download</button>
</div>
<div :style="{ width: '100%', height: '100%' }">
<VPdfViewer
ref="vpvRef"
src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf"
/>
</div>
</div>
</template>
<style scoped>
#vpv {
width: 100%;
height: 1490px;
margin: 0 auto;
}
@media (max-width: 992px) {
#vpv {
width: 85%;
}
}
@media (max-width: 1028px) {
#vpv {
width: 70%;
}
}
</style>
vue
<script setup>
import { VPdfViewer } from '@vue-pdf-viewer/viewer'
import { ref, computed, watch, unref } from 'vue'
// Create a ref to hold the VPdfViewer component
const vpvRef = ref(null)
const downloadControl = computed(() => vpvRef.value?.downloadControl)
const downloadFile = () => {
const downloadCtrl = unref(downloadControl)
if(!downloadCtrl) return
downloadCtrl.download()
}
watch(downloadControl, (downloadCtrl) => {
if (!downloadCtrl) return
downloadCtrl.onError = (error) => {
console.log('Download error', error)
}
downloadCtrl.onComplete = () => {
console.log('Download completed')
}
})
</script>
<template>
<div id="vpv">
<div>
<button @click="downloadFile">Download</button>
</div>
<div :style="{ width: '100%', height: '100%' }">
<VPdfViewer
ref="vpvRef"
src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf"
/>
</div>
</div>
</template>
<style scoped>
#vpv {
width: 100%;
height: 1490px;
margin: 0 auto;
}
@media (max-width: 992px) {
#vpv {
width: 85%;
}
}
@media (max-width: 1028px) {
#vpv {
width: 70%;
}
}
</style>
vue
<script lang="ts">
import { VPdfViewer } from '@vue-pdf-viewer/viewer'
import { ref, computed, watch, defineComponent, unref } from 'vue'
export default defineComponent({
components: { VPdfViewer },
setup() {
// Create a ref to hold the VPdfViewer component
const vpvRef = ref<InstanceType<typeof VPdfViewer>>()
const downloadControl = computed(() => vpvRef.value?.downloadControl)
const downloadFile = () => {
const downloadCtrl = unref(downloadControl)
if(!downloadCtrl) return
downloadCtrl.download()
}
watch(downloadControl, (downloadCtrl) => {
if (!downloadCtrl) return
downloadCtrl.onError = (error) => {
console.log('Download error', error)
}
downloadCtrl.onComplete = () => {
console.log('Download completed')
}
})
return {
downloadFile,
vpvRef
}
}
})
</script>
<template>
<div id="vpv">
<div>
<button @click="downloadFile">Download</button>
</div>
<div :style="{ width: '100%', height: '100%' }">
<VPdfViewer
ref="vpvRef"
src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf"
/>
</div>
</div>
</template>
<style scoped>
#vpv {
width: 100%;
height: 1490px;
margin: 0 auto;
}
@media (max-width: 992px) {
#vpv {
width: 85%;
}
}
@media (max-width: 1028px) {
#vpv {
width: 70%;
}
}
</style>
vue
<script>
import { VPdfViewer } from '@vue-pdf-viewer/viewer'
import { ref, computed, defineComponent, watch, unref } from 'vue'
export default {
components: { VPdfViewer },
setup() {
// Create a ref to hold the VPdfViewer component
const vpvRef = ref(null)
const downloadControl = computed(() => vpvRef.value?.downloadControl)
const downloadFile = () => {
const printCtrl = unref(printControl)
if(!downloadCtrl) return
downloadCtrl.download()
}
watch(downloadControl, (downloadCtrl) => {
if (!printCtrl) return
downloadCtrl.onError = (error) => {
console.log('Download error', error)
}
downloadCtrl.onComplete = () => {
console.log('Download completed')
}
})
return {
downloadFile,
vpvRef
}
}
}
</script>
<template>
<div id="vpv">
<div>
<button @click="downloadFile">Download</button>
</div>
<div :style="{ width: '100%', height: '100%' }">
<VPdfViewer
ref="vpvRef"
src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf"
/>
</div>
</div>
</template>
<style scoped>
#vpv {
width: 100%;
height: 1490px;
margin: 0 auto;
}
@media (max-width: 992px) {
#vpv {
width: 85%;
}
}
@media (max-width: 1028px) {
#vpv {
width: 70%;
}
}
</style>