Components

Methods

Exposed methods for programmatic control.

The NuxtPdfKit component exposes a controls object through a template ref for programmatic control.

Usage

<template>
  <NuxtPdfKit ref="pdfViewer" src="/document.pdf" />
  <button @click="goToPage5">Go to Page 5</button>
</template>

<script setup>
const pdfViewer = ref(null)

function goToPage5() {
  pdfViewer.value?.controls.pageControl.goToPage(5)
}
</script>

Available Controls

GroupPropertyTypeDescription
pageControlgoToPage(page: number) => voidNavigate to a specific page
pageControlprevPage() => voidGo to the previous page
pageControlnextPage() => voidGo to the next page
pageControlcurrentPagenumber (readonly)Current page number
pageControltotalPagesnumber (readonly)Total number of pages
zoomControlzoomIn() => voidIncrease zoom level
zoomControlzoomOut() => voidDecrease zoom level
zoomControlsetZoom(level: number | ZoomLevel) => voidSet specific zoom level
zoomControlscalenumber (readonly)Current zoom scale
zoomControlzoomModeZoomLevel (readonly)Current zoom mode
rotateControlrotateClockwise() => voidRotate +90°
rotateControlrotateCounterclockwise() => voidRotate -90°
rotateControlrotationnumber (readonly)Current rotation (0, 90, 180, 270)
searchControlsearch(query: string) => voidPerform a search
searchControlnextMatch() => voidGo to next match
searchControlprevMatch() => voidGo to previous match
searchControlclearSearch() => voidClear search results
searchControlquerystring (readonly)Current search query
searchControlmatchesSearchMatch[] (readonly)Search matches
searchControlcurrentMatchIndexnumber (readonly)Current match index
printControlprint() => voidOpen print dialog
downloadControldownload() => voidDownload the PDF
viewControlsetViewMode(mode: ViewMode) => voidSet view mode
viewControlsetScrollMode(mode: ScrollMode) => voidSet scroll mode
viewControltoggleSidebar() => voidToggle the thumbnail sidebar
viewControltoggleFullscreen() => voidToggle fullscreen
viewControlviewModeViewMode (readonly)Current view mode
viewControlscrollModeScrollMode (readonly)Current scroll mode
viewControlisFullscreenboolean (readonly)Fullscreen state
viewControlisSidebarVisibleboolean (readonly)Sidebar state
themeControltoggleTheme() => voidToggle light/dark theme
themeControlisDarkboolean (readonly)Dark mode state
<script setup>
const pdfViewer = ref(null)

// Go to page 10
pdfViewer.value?.controls.pageControl.goToPage(10)

// Navigation
pdfViewer.value?.controls.pageControl.nextPage()
pdfViewer.value?.controls.pageControl.prevPage()
</script>

Zoom

<script setup>
const pdfViewer = ref(null)

pdfViewer.value?.controls.zoomControl.zoomIn()
pdfViewer.value?.controls.zoomControl.zoomOut()

// Set to 150%
pdfViewer.value?.controls.zoomControl.setZoom(1.5)

// Fit to page
pdfViewer.value?.controls.zoomControl.setZoom('page-fit')

// Fit to width
pdfViewer.value?.controls.zoomControl.setZoom('page-width')
</script>

Rotate

<script setup>
const pdfViewer = ref(null)

pdfViewer.value?.controls.rotateControl.rotateClockwise()
pdfViewer.value?.controls.rotateControl.rotateCounterclockwise()
</script>
<script setup>
const pdfViewer = ref(null)

pdfViewer.value?.controls.searchControl.search('invoice')
pdfViewer.value?.controls.searchControl.nextMatch()
pdfViewer.value?.controls.searchControl.clearSearch()
</script>
<script setup>
const pdfViewer = ref(null)

pdfViewer.value?.controls.printControl.print()
pdfViewer.value?.controls.downloadControl.download()
</script>

View Mode & Theme

<script setup>
const pdfViewer = ref(null)

// View and scroll mode
pdfViewer.value?.controls.viewControl.setViewMode('dual')
pdfViewer.value?.controls.viewControl.setScrollMode('horizontal')

// Sidebar and fullscreen
pdfViewer.value?.controls.viewControl.toggleSidebar()
pdfViewer.value?.controls.viewControl.toggleFullscreen()

// Theme
pdfViewer.value?.controls.themeControl.toggleTheme()
</script>

Complete Example

<template>
  <div class="flex flex-col gap-4">
    <!-- Custom Controls -->
    <div class="flex gap-2">
      <UButton @click="pdfViewer?.controls.pageControl.prevPage()">Previous</UButton>
      <UButton @click="pdfViewer?.controls.pageControl.nextPage()">Next</UButton>
      <UButton @click="pdfViewer?.controls.zoomControl.zoomIn()">Zoom In</UButton>
      <UButton @click="pdfViewer?.controls.zoomControl.zoomOut()">Zoom Out</UButton>
      <UButton @click="pdfViewer?.controls.rotateControl.rotateClockwise()">Rotate</UButton>
      <UButton @click="pdfViewer?.controls.printControl.print()">Print</UButton>
      <UButton @click="pdfViewer?.controls.downloadControl.download()">Download</UButton>
    </div>

    <!-- PDF Viewer -->
    <div class="h-[600px]">
      <NuxtPdfKit ref="pdfViewer" src="/document.pdf" />
    </div>
  </div>
</template>

<script setup>
const pdfViewer = ref(null)
</script>
Copyright © 2026