Giter VIP home page Giter VIP logo

app-extension-qpdfviewer's Introduction

QPdfViewer (@quasar/qpdfviewer)

official icon npm (scoped) GitHub code size in bytes GitHub repo size in bytes npm

QPdfViewer is an UI App Extension for Quasar Framework v1. It will not work with legacy versions of Quasar Framework.

This work is currently in beta and there are expected changes while things get worked out. Your help with testing is greatly appreciated. Suggestions and PRs welcomed.

Info

QPdfViewer allows you to have PDF in your web pages.

Install

To add this App Extension to your Quasar application, run the following (in your Quasar app folder):

quasar ext add @quasar/qpdfviewer

Uninstall

To remove this App Extension from your Quasar application, run the following (in your Quasar app folder):

quasar ext remove @quasar/qpdfviewer

Describe

You can use quasar describe QPdfViewer

Test Project

In demo folder of app-extension-qpdfviewer.

Demo

Can be found here

Example Code

Be sure to check out the Test Project for more examples.

<q-pdfviewer
  v-model="show"
  src="'https://www.ets.org/Media/Tests/GRE/pdf/gre_research_validity_data.pdf'"
  type="pdfjs"
  content-class="absolute"
/>

or

<template>
  <div class="container q-pa-lg">
    <q-pdfviewer
      v-model="show"
      :src="src"
      type="html5"
      content-class="fit container"
      inner-content-class="fit container"
    />
  </div>
</template>

<script>
export default {
  name: 'Container',
  props: {
    src: String
  },

  data () {
    return {
      show: true
    }
  }
}
</script>

<style>
.container {
  max-width: 50%;
  max-height: 70%;
  min-width: 400px;
  min-height: 600px;
  width: 100%;
  height: 100%;
}
</style>

Using blob data (for type="html5" only):

fetchPDF (payload) {
  this.$axios.post('/my/url/to/pdf', payload, { responseType: 'blob' }).then(res => {
    // create the blob
    const blob = new Blob([res.data], { type: res.data.type })
    // set reactive variable
    pdfSrc = window.URL.createObjectURL(blob)
  }).catch(err => {
    this.$q.notify({
      message: 'Error downloading PDF',
      type: 'negative',
      textColor: 'white',
      color: 'negative',
      icon: 'error',
      closeBtn: 'close',
      position: 'top'
    })
  })
}

NOTE: QPdfviewer now has support for native HTML5 PDF viewer and for PDFJS. Use type="html5" or type="pdfjs". If you previously has this app extension, and want to use the pdfjs, you will need to re-install it. An update will not get the PDFJS for you. If you update, you can run quasar ext invoke @quasar/qpdfviewer instead of re-installing.


NOTE: QPdfviewer uses the <object> tag for displaying the PDF (type="html5" only). Should the browser not support this, the fallback is to use an <iframe>. And, should this also not be supported by the browser, then some text will be displayed with a link to the PDF so the user can download it for off-line viewing.

When using PDFJS, the PDF is always displayed in an <iframe>.


NOTE: QPdfviewer now works with Electron, but you have to use type="pdfjs" to get this functionality.


QPdfviewer Vue Properties

Vue Property Type Description
value Boolean Use v-model to toggle visiblity
src String Path to the PDF source
type String PDF engine to use (values: html5 or pdfjs)
error-string String Set this if you wish to change from the default error string
load Function The function to be called when the pdf document has been loaded
error Function The function to be called when the pdf document has an error
content-class [String, Object, Array] Style definitions to be attributed to the PDF container
content-style [String, Object, Array] Style definitions to be attributed to the PDF container
inner-content-class [String, Object, Array] Style definitions to be attributed to the PDF object
inner-content-style [String, Object, Array] Style definitions to be attributed to the PDF object

QPdfViewer has no events or slots.

Donate

If you appreciate the work that went into this App Extension, please consider donating to Quasar.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.