Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

vue-pdfjs is a Vue 3 component for displaying PDF files using the standard pdf.js viewer. This package provides a simple and powerful integration to embed PDF viewers in Vue applications.

Docs

Features

  • Display PDF files with pdf.js
  • Localization support
  • Modular components for easy customization
  • Compatible with Vue 3 and Vite

Installation

To install the package, run:

npm install @tuttarealstep/vue-pdf.js

Usage

<script setup lang="ts">
import { reactive, useTemplateRef } from "vue";
import { VuePDFjs } from "@tuttarealstep/vue-pdf.js";
import "@tuttarealstep/vue-pdf.js/dist/style.css";
import enUS_FTL from "@tuttarealstep/vue-pdf.js/l10n/en-US/viewer.ftl?raw";

const pdf = new URL("./path/to/custom.pdf", import.meta.url).href;

const vuepdfjs = useTemplateRef<typeof VuePDFjs>("vuepdfjs");

const options = reactive({
 locale: {
 code: "en-US",
 ftl: enUS_FTL,
 },
});

const onPdfAppLoaded = () => {
 console.log("pdf-app:loaded");
 console.log(vuepdfjs.value?.pdfApp);

 if (!vuepdfjs.value?.pdfApp) {
 return;
 }

 vuepdfjs.value.pdfApp.eventBus.on("pagesloaded", (e: any) => {
 vuepdfjs.value?.pdfApp.eventBus.dispatch("find", {
 query: [
 "Dynamic languages such as JavaScript are more difficult to compile than statically typed ones.",
 ],
 caseSensitive: false,
 entireWord: false,
 highlightAll: true,
 });
 });
};
</script>
<template>
 <div id="app">
 <VuePDFjs
 ref="vuepdfjs"
 :source="pdf"
 :options="options"
 @pdf-app:loaded="onPdfAppLoaded"
 />
 </div>
</template>
<style>
html,
body,
#app {
 height: 100%;
 width: 100%;
}

body {
 margin: 0;
 padding: 0;
}
</style>

With usePDF composable

<script setup lang="ts">
import { reactive, useTemplateRef } from "vue";
import { VuePDFjs, usePDF } from "@tuttarealstep/vue-pdf.js";
import "@tuttarealstep/vue-pdf.js/dist/style.css";
import enUS_FTL from "@tuttarealstep/vue-pdf.js/l10n/en-US/viewer.ftl?raw";

const vuepdfjs = useTemplateRef<typeof VuePDFjs>("vuepdfjs");

const options = reactive({
 locale: {
 code: "en-US",
 ftl: enUS_FTL,
 },
});

const onPdfAppLoaded = () => {
 console.log("pdf-app:loaded");
 console.log(vuepdfjs.value?.pdfApp);

 if (!vuepdfjs.value?.pdfApp) {
 return;
 }

 vuepdfjs.value.pdfApp.eventBus.on("pagesloaded", (e: any) => {
 vuepdfjs.value?.pdfApp.eventBus.dispatch("find", {
 query: [
 "Dynamic languages such as JavaScript are more difficult to compile than statically typed ones.",
 ],
 caseSensitive: false,
 entireWord: false,
 highlightAll: true,
 });
 });
};

const { pdf, info, pages } = usePDF(
 new URL("./path/to/custom.pdf", import.meta.url).href
); // or any other source type

console.log(document, info, pages);
</script>
<template>
 <div id="app">
 <VuePDFjs
 ref="vuepdfjs"
 :source="pdf"
 :options="options"
 @pdf-app:loaded="onPdfAppLoaded"
 />
 </div>
</template>
<style>
html,
body,
#app {
 height: 100%;
 width: 100%;
}

body {
 margin: 0;
 padding: 0;
}
</style>

License

MIT

Credits

  • pdf.js (Apache-2.0) - PDF viewer library
  • vue-pdf (MIT) - Inspiration for the project

About

A Vue component for displaying PDF files using the standard pdf.js viewer. This package provides a simple and powerful integration to embed PDF viewers in Vue applications.

Topics

Resources

Stars

25 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /