Configure Annotation Tools
You can customize the appearance and behavior of annotation tools by passing additional options to the VPdfAnnotationPlugin
function.
Show/Hide Annotation Tools
You can enable or disable each annotation tool based on what you want your users to access. By default, all annotation tools are enabled and visible.
<script setup lang="ts"> import { VPdfViewer } from "@vue-pdf-viewer/viewer"; import VPdfAnnotationPlugin from "@vue-pdf-viewer/annotation"; // Custom configuration const annotationPlugin = VPdfAnnotationPlugin({ highlight: false, // Disable and hide highlight tool }); </script> <template> <div :style="{ width: '1028px', height: '700px' }"> <VPdfViewer src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf" :plugins="[annotationPlugin]" /> </div> </template>
<script setup> import { VPdfViewer } from "@vue-pdf-viewer/viewer"; import VPdfAnnotationPlugin from "@vue-pdf-viewer/annotation"; // Custom configuration const annotationPlugin = VPdfAnnotationPlugin({ highlight: false, // Disable and hide highlight tool }); </script> <template> <div :style="{ width: '1028px', height: '700px' }"> <VPdfViewer src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf" :plugins="[annotationPlugin]" /> </div> </template>
<script lang="ts"> import { VPdfViewer } from '@vue-pdf-viewer/viewer' import VPdfAnnotationPlugin from '@vue-pdf-viewer/annotation' import { defineComponent } from 'vue'; export default defineComponent({ components: { VPdfViewer }, data() { const annotationPlugin = VPdfAnnotationPlugin({ highlight: false // Disable and hide highlight tool }); return { annotationPlugin } } }); </script> <template> <div :style="{ width: '1028px', height: '700px' }"> <VPdfViewer src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf" :plugins="[annotationPlugin]" /> </div> </template>
<script> import { VPdfViewer } from '@vue-pdf-viewer/viewer' import VPdfAnnotationPlugin from '@vue-pdf-viewer/annotation' import { defineComponent } from 'vue'; export default defineComponent({ components: { VPdfViewer }, data() { const annotationPlugin = VPdfAnnotationPlugin({ highlight: false // Disable and hide highlight tool }); return { annotationPlugin } } }); </script> <template> <div :style="{ width: '1028px', height: '700px' }"> <VPdfViewer src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf" :plugins="[annotationPlugin]" /> </div> </template>
Configure with Custom Icons
If you want to replace the default highlight icon in the toolbar, you can easily provide your own custom icons for annotation tools.
For example, create a custom highlight icon component:
./components/IconHighlight.vue
<template> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M20 6L9 17L4 12" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </template>
Then, use it in your configuration as shown below:
<script setup lang="ts"> import { VPdfViewer } from "@vue-pdf-viewer/viewer"; import VPdfAnnotationPlugin from "@vue-pdf-viewer/annotation"; import IconHighlight from "./components/IconHighlight.vue"; const annotationPlugin = VPdfAnnotationPlugin({ highlight: { // Use a custom icon component for the highlight tool icon: IconHighlight, } }); </script> <template> <div :style="{ width: '1028px', height: '700px' }"> <VPdfViewer src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf" :plugins="[annotationPlugin]" /> </div> </template>
<script setup> import { VPdfViewer } from "@vue-pdf-viewer/viewer"; import VPdfAnnotationPlugin from "@vue-pdf-viewer/annotation"; import IconHighlight from "./components/IconHighlight.vue"; const annotationPlugin = VPdfAnnotationPlugin({ highlight: { // Use a custom icon component for the highlight tool icon: IconHighlight, } }); </script> <template> <div :style="{ width: '1028px', height: '700px' }"> <VPdfViewer src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf" :plugins="[annotationPlugin]" /> </div> </template>
<script lang="ts"> import { VPdfViewer } from '@vue-pdf-viewer/viewer' import VPdfAnnotationPlugin from '@vue-pdf-viewer/annotation' import { defineComponent } from 'vue'; import IconHighlight from './components/IconHighlight.vue'; export default defineComponent({ components: { VPdfViewer }, data() { // Custom configuration const annotationPlugin = VPdfAnnotationPlugin({ // Use a custom icon component for the highlight tool highlight: { icon: IconHighlight } }); return { annotationPlugin } } }); </script> <template> <div :style="{ width: '1028px', height: '700px' }"> <VPdfViewer src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf" :plugins="[annotationPlugin]" /> </div> </template>
<script> import { VPdfViewer } from '@vue-pdf-viewer/viewer' import VPdfAnnotationPlugin from '@vue-pdf-viewer/annotation' import { defineComponent } from 'vue'; import IconHighlight from './components/IconHighlight.vue'; export default defineComponent({ components: { VPdfViewer }, data() { // Custom configuration const annotationPlugin = VPdfAnnotationPlugin({ // Use a custom icon component for the highlight tool highlight: { icon: IconHighlight } }); return { annotationPlugin } } }); </script> <template> <div :style="{ width: '1028px', height: '700px' }"> <VPdfViewer src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf" :plugins="[annotationPlugin]" /> </div> </template>
Configure Highlight Tool
Configure Highlight Color
Currently, the Highlight tool has a color palette of 6 default colors. Here is how you can change the highlight color.
<script setup lang="ts"> import { VPdfViewer } from '@vue-pdf-viewer/viewer' import VPdfAnnotationPlugin from '@vue-pdf-viewer/annotation' // Custom configuration const annotationPlugin = VPdfAnnotationPlugin({ highlight: { colors: [ {label: 'Red', value: 'red'}, {label: 'Green', value: '#007700'}, // hex color {label: 'Blue', value: '#0000ff90'}] // hex color with opacity }, // configure allowed highlight colors to select }); </script> <template> <div :style="{ width: '1028px', height: '700px' }"> <VPdfViewer src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf" :plugins="[annotationPlugin]" /> </div> </template>
<script setup> import { VPdfViewer } from '@vue-pdf-viewer/viewer' import VPdfAnnotationPlugin from '@vue-pdf-viewer/annotation' // Custom configuration const annotationPlugin = VPdfAnnotationPlugin({ highlight: { colors: [ {label: 'Red', value: 'red'}, {label: 'Green', value: '#007700'}, // hex color {label: 'Blue', value: '#0000ff90'}] // hex color with opacity }, // configure allowed highlight colors to select }); </script> <template> <div :style="{ width: '1028px', height: '700px' }"> <VPdfViewer src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf" :plugins="[annotationPlugin]" /> </div> </template>
<script lang="ts"> import { VPdfViewer } from '@vue-pdf-viewer/viewer' import VPdfAnnotationPlugin from '@vue-pdf-viewer/annotation' import { defineComponent } from 'vue'; export default defineComponent({ components: { VPdfViewer }, data() { // Custom configuration const annotationPlugin = VPdfAnnotationPlugin({ highlight: { colors: [ {label: 'Red', value: 'red'}, {label: 'Green', value: '#007700'}, // hex color {label: 'Blue', value: '#0000ff90'}] // hex color with opacity ] } }); return { annotationPlugin } } }); </script> <template> <div :style="{ width: '1028px', height: '700px' }"> <VPdfViewer src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf" :plugins="[annotationPlugin]" /> </div> </template>
<script> import { VPdfViewer } from '@vue-pdf-viewer/viewer' import VPdfAnnotationPlugin from '@vue-pdf-viewer/annotation' import { defineComponent } from 'vue'; export default defineComponent({ components: { VPdfViewer }, data() { // Custom configuration const annotationPlugin = VPdfAnnotationPlugin({ highlight: { colors: [ {label: 'Red', value: 'red'}, {label: 'Green', value: '#007700'}, // hex color {label: 'Blue', value: '#0000ff90'}] // hex color with opacity ] } }); return { annotationPlugin } } }); </script> <template> <div :style="{ width: '1028px', height: '700px' }"> <VPdfViewer src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf" :plugins="[annotationPlugin]" /> </div> </template>
Configure Free Text Tool
Configure Font Color
Currently, the Free Text tool has a color palette of 12 default colors. Here is how you can change the font color.
<script setup lang="ts"> import { VPdfViewer } from '@vue-pdf-viewer/viewer' import VPdfAnnotationPlugin from '@vue-pdf-viewer/annotation' // Custom configuration const annotationPlugin = VPdfAnnotationPlugin({ freeText: { fontColors: [ {label: 'Red', value: 'red'}, {label: 'Green', value: '#007700'}, // hex color {label: 'Yellow', value: '#ffff0090'} // hex color with opacity ] } }); </script> <template> <div :style="{ width: '1028px', height: '700px' }"> <VPdfViewer src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf" :plugins="[annotationPlugin]" /> </div> </template>
<script setup> import { VPdfViewer } from '@vue-pdf-viewer/viewer' import VPdfAnnotationPlugin from '@vue-pdf-viewer/annotation' // Custom configuration const annotationPlugin = VPdfAnnotationPlugin({ freeText: { fontColors: [ {label: 'Red', value: 'red'}, {label: 'Green', value: '#007700'}, // hex color {label: 'Yellow', value: '#ffff0090'} // hex color with opacity ] } }); </script> <template> <div :style="{ width: '1028px', height: '700px' }"> <VPdfViewer src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf" :plugins="[annotationPlugin]" /> </div> </template>
<script lang="ts"> import { VPdfViewer } from '@vue-pdf-viewer/viewer' import VPdfAnnotationPlugin from '@vue-pdf-viewer/annotation' import { defineComponent } from 'vue'; // Custom configuration export default defineComponent({ components: { VPdfViewer }, data() { const annotationPlugin = VPdfAnnotationPlugin({ freeText: { fontColors: [ {label: 'Red', value: 'red'}, {label: 'Green', value: '#007700'}, // hex color {label: 'Yellow', value: '#ffff0090'} // hex color with opacity ] } }); return { annotationPlugin } } }); </script> <template> <div :style="{ width: '1028px', height: '700px' }"> <VPdfViewer src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf" :plugins="[annotationPlugin]" /> </div> </template>
<script> import { VPdfViewer } from '@vue-pdf-viewer/viewer' import VPdfAnnotationPlugin from '@vue-pdf-viewer/annotation' import { defineComponent } from 'vue'; // Custom configuration export default defineComponent({ components: { VPdfViewer }, data() { const annotationPlugin = VPdfAnnotationPlugin({ freeText: { fontColors: [ {label: 'Red', value: 'red'}, {label: 'Green', value: '#007700'}, // hex color {label: 'Yellow', value: '#ffff0090'} // hex color with opacity ] } }); return { annotationPlugin } } }); </script> <template> <div :style="{ width: '1028px', height: '700px' }"> <VPdfViewer src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf" :plugins="[annotationPlugin]" /> </div> </template>
Configure Font Size
For the Free Text tool, you can change or add font size depending on your preference.
<script setup lang="ts"> import { VPdfViewer } from '@vue-pdf-viewer/viewer' import VPdfAnnotationPlugin from '@vue-pdf-viewer/annotation' // Custom configuration const annotationPlugin = VPdfAnnotationPlugin({ freeText: { fontSizes: [ 12, 14, 16 ] } }); </script> <template> <div :style="{ width: '1028px', height: '700px' }"> <VPdfViewer src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf" :plugins="[annotationPlugin]" /> </div> </template>
<script setup> import { VPdfViewer } from '@vue-pdf-viewer/viewer' import VPdfAnnotationPlugin from '@vue-pdf-viewer/annotation' // Custom configuration const annotationPlugin = VPdfAnnotationPlugin({ freeText: { fontSizes: [ 12, 14, 16 ] } }); </script> <template> <div :style="{ width: '1028px', height: '700px' }"> <VPdfViewer src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf" :plugins="[annotationPlugin]" /> </div> </template>
<script lang="ts"> import { VPdfViewer } from '@vue-pdf-viewer/viewer' import VPdfAnnotationPlugin from '@vue-pdf-viewer/annotation' import { defineComponent } from 'vue'; export default defineComponent({ components: { VPdfViewer }, data() { // Custom configuration const annotationPlugin = VPdfAnnotationPlugin({ freeText: { fontSizes: [ 12, 14, 16 ] } }); }); return { annotationPlugin } } }); </script> <template> <div :style="{ width: '1028px', height: '700px' }"> <VPdfViewer src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf" :plugins="[annotationPlugin]" /> </div> </template>
<script> import { VPdfViewer } from '@vue-pdf-viewer/viewer' import VPdfAnnotationPlugin from '@vue-pdf-viewer/annotation' import { defineComponent } from 'vue'; export default defineComponent({ components: { VPdfViewer }, data() { // Custom configuration const annotationPlugin = VPdfAnnotationPlugin({ freeText: { fontSizes: [ 12, 14, 16 ] } }); }); return { annotationPlugin } } }); </script> <template> <div :style="{ width: '1028px', height: '700px' }"> <VPdfViewer src="https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf" :plugins="[annotationPlugin]" /> </div> </template>