@spinacia_/file-viewer
Version:
A file viewer component.
110 lines (83 loc) • 4.94 kB
Markdown
## Introduction
A file viewer component in Typescript. The file type is detected by checking
the magic number.
## Installation
```
npm install /file-viewer
```
```
pnpm add /file-viewer
```
## Usage
```
<script setup lang="ts">
import { ref } from 'vue'
import { FileViewer } from '@spinacia_/file-viewer/dist'
import '@spinacia_/file-viewer/dist/style.css'
import testUrl from '@/assets/files/testFile.pdf?url'
const sourceData = ref<Response>()
const loadFile = async () => {
fetch(testUrl).then((res: Response) => {
sourceData.value = res
}
}
// const clearFile = () => { sourceData.value = undefined }
</script>
<template>
<button ="loadFile">Load file</button>
<FileViewer :res="sourceData" class="viewer-container" />
</template>
<style scoped>
.viewer-container {
width: 60vw;
height: 80vh;
}
</style>
```
or specify the type in props:
```
<script setup lang="ts">
import { ref } from 'vue'
import { FileViewer, readFileTypeFromBlob } from '/file-viewer/dist'
import '/file-viewer/dist/style.css'
import testUrl from '@/assets/files/testFile.pdf?url'
const blobData = ref<Blob>()
const type = ref<string>()
const loadFile = async () => {
fetch(testUrl).then(async (res: Response) => {
const blob = await res.clone().blob()
type.value = (await readFileTypeFromBlob(blob)).ext
blobData.value = blob
}
}
// const clearFile = () => { blobData.value = undefined }
</script>
<template>
<button ="loadFile">Load file</button>
<FileViewer :blob="blobData" :type="type" />
</template>
```
and all supported types can be checked in XXX_TYPE variables:
```
import { Image_Type, Pdf_Type, Text_Type, Excel_Type, Word_Type } from '/file-viewer/dist'
```
## Props
| name | default | type | description |
|--------------------|:-------------------------|----------------------------------------------|---------------------------------------------------------------------------------------------------------------|
| `ref` | `undefined` | `Response` | file source data |
| `blob` | `undefined` | `Blob` | file source data |
| `type` | `undefined` | `string` | if the file type is not passed in props, its type will be automatically detected by checking the magic number |
| `change` | `false` | `boolean` | if true, the image can be zoomed, dragged and rotated, the pdf can be zoomed |
| `fit` | `contain` | `contain`/`cover`/`fill`/`none`/`scale-down` | indicate how the image should be resized to fit its container, same as object-fit |
| `watermark` | `undefined` | `string` | label of watermark which will be shown in pdf |
| `watermarkProps` | `{}` | `Object` | watermark options |
| `pagination` | `undefined` | `number` | item count of each page in pdf pagination |
| `download` | `false` | `boolean` | if true, the pdf file can be downloaded |
| `filename` | `undefined` | `string` | filename of pdf file, which will be used in download function |
| `scrollColor` | `rgba(150,150,150,0.15)` | `string` | color of -webkit-scrollbar-thumb |
| `scrollHoverColor` | `rgba(150,150,150,0.3)` | `string` | color of -webkit-scrollbar-thumb:hover |
## Supported file types
- images: `.jpg` `.png` `.gif` `.bmp` `.webp` `.svg`
- word: `.docx`
- pdf: `.pdf`
- plain text: `.txt`