admin管理员组文章数量:1279051
So I've tried to get a PDF viewer working with the likes of pdf.js and vue-pdf.
I can get vue-pdf to work however I can't seem to get local files to render and in the case of pdf.js I tried to download the example project on the website, .js/getting_started/#download, however I only get a cannot get "../.../some.pdf".
testPage.vue with vue-pdf:
<template>
<div>
<pdf src="../assets/test.pdf"></pdf>
</div>
</template>
<script>
import pdf from 'vue-pdf'
export default {
name: 'test',
data () {
return {
}
},
ponents: {
pdf
}
}
</script>
<style>
</style>
The error it gives is cannot GET "../assets/test.pdf"
testPage.vue with pdf.js:
<template>
<div>
<a href="../assets/viewer.html?=test.pdf"></a>
</div>
</template>
<script>
export default {
name: 'test',
data () {
return {
}
},
ponents: {
}
}
</script>
<style>
</style>
The error given is cannot GET "../assets/viewer.html?=test.pdf" clearly the errors are similar so I've probably messed up big time.
Webpack:
'use strict'
const path = require('path')
const utils = require('./utils')
const config = require('../config')
const vueLoaderConfig = require('./vue-loader.conf')
function resolve (dir) {
return path.join(__dirname, '..', dir)
}
module.exports = {
entry: {
app: './src/main.js'
},
output: {
path: config.build.assetsRoot,
filename: '[name].js',
publicPath: process.env.NODE_ENV === 'production'
? config.build.assetsPublicPath
: config.dev.assetsPublicPath
},
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src'),
}
},
module: {
rules: [
{
test: /\.(js|vue)$/,
loader: 'eslint-loader',
enforce: 'pre',
include: [resolve('src'), resolve('test')],
options: {
formatter: require('eslint-friendly-formatter')
}
},
{
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'), resolve('test')]
},
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
},
{
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('media/[name].[hash:7].[ext]')
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
}
},
{
test: /\.css$/,
loader: ['style-loader']
},
{
test: /\.(pdf|jpg|gif)$/,
loader: 'file-loader'
}
]
}
}
Thanks.
So I've tried to get a PDF viewer working with the likes of pdf.js and vue-pdf.
I can get vue-pdf to work however I can't seem to get local files to render and in the case of pdf.js I tried to download the example project on the website, https://mozilla.github.io/pdf.js/getting_started/#download, however I only get a cannot get "../.../some.pdf".
testPage.vue with vue-pdf:
<template>
<div>
<pdf src="../assets/test.pdf"></pdf>
</div>
</template>
<script>
import pdf from 'vue-pdf'
export default {
name: 'test',
data () {
return {
}
},
ponents: {
pdf
}
}
</script>
<style>
</style>
The error it gives is cannot GET "../assets/test.pdf"
testPage.vue with pdf.js:
<template>
<div>
<a href="../assets/viewer.html?=test.pdf"></a>
</div>
</template>
<script>
export default {
name: 'test',
data () {
return {
}
},
ponents: {
}
}
</script>
<style>
</style>
The error given is cannot GET "../assets/viewer.html?=test.pdf" clearly the errors are similar so I've probably messed up big time.
Webpack:
'use strict'
const path = require('path')
const utils = require('./utils')
const config = require('../config')
const vueLoaderConfig = require('./vue-loader.conf')
function resolve (dir) {
return path.join(__dirname, '..', dir)
}
module.exports = {
entry: {
app: './src/main.js'
},
output: {
path: config.build.assetsRoot,
filename: '[name].js',
publicPath: process.env.NODE_ENV === 'production'
? config.build.assetsPublicPath
: config.dev.assetsPublicPath
},
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src'),
}
},
module: {
rules: [
{
test: /\.(js|vue)$/,
loader: 'eslint-loader',
enforce: 'pre',
include: [resolve('src'), resolve('test')],
options: {
formatter: require('eslint-friendly-formatter')
}
},
{
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'), resolve('test')]
},
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
},
{
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('media/[name].[hash:7].[ext]')
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
}
},
{
test: /\.css$/,
loader: ['style-loader']
},
{
test: /\.(pdf|jpg|gif)$/,
loader: 'file-loader'
}
]
}
}
Thanks.
Share Improve this question edited Nov 28, 2020 at 16:18 Jerry Chong 9,2404 gold badges53 silver badges43 bronze badges asked Oct 31, 2017 at 9:37 Erik CastilloErik Castillo 311 gold badge2 silver badges4 bronze badges4 Answers
Reset to default 3Solution for vue-pdf v4.2.0
Make sure the pdf file is placed under /public folder.
The PDF file path will be: public/file1.pdf
In that case, your pdf src should be without public/ path, as per below:
<pdf src="file1.pdf"></pdf>
Now it should be render and view the PDF file successfully.
Local files may be reached using ~
try to use: <pdf src="~/assets/test.pdf"></pdf>
more details
For me worked when I moved the pdf to static
folder and code was like
<pdf src="../{relative_path}/static/test.pdf"></pdf>
I also had such a challenge until I used an iframe that really gets the job done with no plugins, check the code.
<iframe id="fred" style="border:1px solid #666CCC" title="PDF in an i-Frame" :src="pdf_file" frameborder="1" scrolling="auto" width="100%" height="600px" ></iframe>
本文标签: javascriptVuejsHow to view or render local PDF filesStack Overflow
版权声明:本文标题:javascript - Vue.js - How to view or render local PDF files? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741216739a2360187.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论