Socket
Socket
Sign inDemoInstall

vue-pdf-up

Package Overview
Dependencies
325
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    vue-pdf-up

vue.js pdf viewer


Version published
Weekly downloads
30
increased by66.67%
Maintainers
1
Created
Weekly downloads
 

Readme

Source

vue-pdf-up

vue.js pdf viewer is a package for Vue that enables you to display and view PDF's easily via vue components.

Install

npm install vue-pdf-up

Example - basic

<template>
  <vue-pdf-up src="https://hd2-test-out.oss-cn-shanghai-finance-1-pub.aliyuncs.com/test/camp/tsr/file/2021/06/03/P3100C02007000200262971_1622442901546.pdf"></vue-pdf-up>
</template>

<script>
import vuePdfUp from 'vue-pdf-up'

export default {
  components: {
    vuePdfUp
  }
}

Browser support

Same browser support as Vue.js 2

API

Props

:src String / Object - default: ''

The url of the given pdf. src may also be a string|TypedArray|DocumentInitParameters|PDFDataRangeTransport for more details, see PDFJS.getDocument().

:page Number - default: 1

The page number to display.

:rotate Number - default: 0

The page rotation in degrees, only multiple of 90 are valid. EG: 90, 180, 270, 360, ...

Examples

Example - current page / page count
<template>
	<div>
		{{currentPage}} / {{pageCount}}
		<vue-pdf-up
			src="https://hd2-test-out.oss-cn-shanghai-finance-1-pub.aliyuncs.com/test/camp/tsr/file/2021/06/03/P3100C02007000200262971_1622442901546.pdf"
			@num-pages="pageCount = $event"
			@page-loaded="currentPage = $event"
		></vue-pdf-up>
	</div>
</template>

<script>

import vuePdfUp from 'vue-pdf-up'

export default {
	components: {
		vuePdfUp
	},
	data() {
		return {
			currentPage: 0,
			pageCount: 0,
		}
	}
}

</script>
Example - display multiple pages of the same pdf document
<template>
	<div>
		<vue-pdf-up
			v-for="i in numPages"
			:key="i"
			:src="src"
			:page="i"
			style="display: inline-block; width: 25%"
		></vue-pdf-up>
	</div>
</template>

<script>

import vuePdfUp from 'vue-pdf-up'

var loadingTask = vuePdfUp.createLoadingTask('https://hd2-test-out.oss-cn-shanghai-finance-1-pub.aliyuncs.com/test/camp/tsr/file/2021/06/03/P3100C02007000200262971_1622442901546.pdf');

export default {
	components: {
		vuePdfUp
	},
	data() {
		return {
			src: loadingTask,
			numPages: undefined,
		}
	},
	mounted() {

		this.src.promise.then(pdf => {

			this.numPages = pdf.numPages;
		});
	}
}

</script>
Example - print all pages
<template>
	<button @click="$refs.myPdfComponent.print()">print</button>
	<vue-pdf-up ref="myPdfComponent" src="https://hd2-test-out.oss-cn-shanghai-finance-1-pub.aliyuncs.com/test/camp/tsr/file/2021/06/03/P3100C02007000200262971_1622442901546.pdf"></vue-pdf-up>
</template>
Example - print multiple pages
<template>
	<button @click="$refs.myPdfComponent.print(100, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])">print</button>
	<vue-pdf-up ref="myPdfComponent" src="https://hd2-test-out.oss-cn-shanghai-finance-1-pub.aliyuncs.com/test/camp/tsr/file/2021/06/03/P3100C02007000200262971_1622442901546.pdf"></vue-pdf-up>
</template>
Example - get text content
<template>
	<div>
		<button
			@click="logContent"
		>
			log content
		</button>
		<vue-pdf-up
			ref="myPdfComponent"
			src="https://hd2-test-out.oss-cn-shanghai-finance-1-pub.aliyuncs.com/test/camp/tsr/file/2021/06/03/P3100C02007000200262971_1622442901546.pdf"
		></vue-pdf-up>
	</div>
</template>

<script>

import vuePdfUp from 'vue-pdf-up'

export default {
	components: {
		vuePdfUp
	},
	methods: {
		logContent() {

			this.$refs.myPdfComponent.pdf.forEachPage(function(page) {

				return page.getTextContent()
				.then(function(content) {

					var text = content.items.map(item => item.str);
					console.log(text);
				})
			});
		}
	}
}

</script>
Example - complete
<template>
	<div>
		<input type="checkbox" v-model="show">
		<select v-model="src" style="width: 30em">
			<option v-for="item in pdfList" :value="item" v-text="item"></option>
		</select>
		<input v-model.number="page" type="number" style="width: 5em"> /{{numPages}}
		<button @click="rotate += 90">&#x27F3;</button>
		<button @click="rotate -= 90">&#x27F2;</button>
		<button @click="$refs.pdf.print()">print</button>
		<div style="width: 50%">
			<div v-if="loadedRatio > 0 && loadedRatio < 1" style="background-color: green; color: white; text-align: center" :style="{ width: loadedRatio * 100 + '%' }">{{ Math.floor(loadedRatio * 100) }}%</div>
			<vue-pdf-up v-if="show" ref="pdf" style="border: 1px solid red" :src="src" :page="page" :rotate="rotate" @password="password" @progress="loadedRatio = $event" @error="error" @num-pages="numPages = $event" @link-clicked="page = $event"></vue-pdf-up>
		</div>
	</div>
</template>
<script>
import vuePdfUp from 'vue-pdf-up'

export default {
	components: {
		'vue-pdf-up': vuePdfUp
	},
	data () {
		return {
			show: true,
			pdfList: [
				'',
				'https://cdn.mozilla.net/pdfjs/tracemonkey.pdf',
				'https://cdn.rawgit.com/mozilla/pdf.js/c6e8ca86/test/pdfs/freeculture.pdf',
				'https://cdn.rawgit.com/mozilla/pdf.js/c6e8ca86/test/pdfs/annotation-link-text-popup.pdf',
				'https://cdn.rawgit.com/mozilla/pdf.js/c6e8ca86/test/pdfs/calrgb.pdf',
				'https://cdn.rawgit.com/sayanee/angularjs-pdf/68066e85/example/pdf/relativity.protected.pdf',
				'data:application/pdf;base64,JVBERi0xLjUKJbXtrvsKMyAwIG9iago8PCAvTGVuZ3RoIDQgMCBSCiAgIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nE2NuwoCQQxF+/mK+wMbk5lkHl+wIFislmIhPhYEi10Lf9/MVgZCAufmZAkMppJ6+ZLUuFWsM3ZXxvzpFNaMYjEriqpCtbZSBOsDzw0zjqPHZYtTrEmz4eto7/0K54t7GfegOGCBbBdDH3+y2zsMsVERc9SoRkXORqKGJupS6/9OmMIUfgypJL4KZW5kc3RyZWFtCmVuZG9iago0IDAgb2JqCiAgIDEzOAplbmRvYmoKMiAwIG9iago8PAogICAvRXh0R1N0YXRlIDw8CiAgICAgIC9hMCA8PCAvQ0EgMC42MTE5ODcgL2NhIDAuNjExOTg3ID4+CiAgICAgIC9hMSA8PCAvQ0EgMSAvY2EgMSA+PgogICA+Pgo+PgplbmRvYmoKNSAwIG9iago8PCAvVHlwZSAvUGFnZQogICAvUGFyZW50IDEgMCBSCiAgIC9NZWRpYUJveCBbIDAgMCA1OTUuMjc1NTc0IDg0MS44ODk3NzEgXQogICAvQ29udGVudHMgMyAwIFIKICAgL0dyb3VwIDw8CiAgICAgIC9UeXBlIC9Hcm91cAogICAgICAvUyAvVHJhbnNwYXJlbmN5CiAgICAgIC9DUyAvRGV2aWNlUkdCCiAgID4+CiAgIC9SZXNvdXJjZXMgMiAwIFIKPj4KZW5kb2JqCjEgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzCiAgIC9LaWRzIFsgNSAwIFIgXQogICAvQ291bnQgMQo+PgplbmRvYmoKNiAwIG9iago8PCAvQ3JlYXRvciAoY2Fpcm8gMS4xMS4yIChodHRwOi8vY2Fpcm9ncmFwaGljcy5vcmcpKQogICAvUHJvZHVjZXIgKGNhaXJvIDEuMTEuMiAoaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnKSkKPj4KZW5kb2JqCjcgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cKICAgL1BhZ2VzIDEgMCBSCj4+CmVuZG9iagp4cmVmCjAgOAowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDA1ODAgMDAwMDAgbiAKMDAwMDAwMDI1MiAwMDAwMCBuIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDAyMzAgMDAwMDAgbiAKMDAwMDAwMDM2NiAwMDAwMCBuIAowMDAwMDAwNjQ1IDAwMDAwIG4gCjAwMDAwMDA3NzIgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSA4CiAgIC9Sb290IDcgMCBSCiAgIC9JbmZvIDYgMCBSCj4+CnN0YXJ0eHJlZgo4MjQKJSVFT0YK',
			],
			src:'',
			loadedRatio: 0,
			page: 1,
			numPages: 0,
			rotate: 0,
		}
	},
	methods: {
		password: function(updatePassword, reason) {
			updatePassword(prompt('password is "test"'));
		},
		error: function(err) {

			console.log(err);
		}
	}
}
</script>

Keywords

FAQs

Last updated on 27 Nov 2021

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc