Я хочу отобразить PDF-файл, созданный в папке изображений, и отобразить его в моем приложении. Я использую pdf.js и импортирую pdfjs-dist для этой цели. Пока мне удалось заставить рабочих работать и настроить веб-пакет для загрузки файла. Но я получаю сообщение об ошибке с указанием пути к файлу. Как ни пытаюсь прописать путь к файлу, выдает ошибку. Я застрял, пытаясь понять это. Как мне получить PDF-файл для рендеринга?
import React, { Component } from "react";
import pdfjsLib from 'pdfjs-dist';
import pdfPath from '../../../../static/dist/assets/images/sampleStuff.pdf';
import ReactDOM from "react-dom";
pdfjsLib.GlobalWorkerOptions.workerSrc = '../../../../static/dist/pdf.worker.bundle.js';
class Samplepdf extends Component {
state = {
file: pdfPath
}
componentDidMount() {
const canvas = ReactDOM.findDOMNode(this.refs.myCanvas);
const ctx = canvas.getContext("2d")
const img = this.refs.image
img.onload = () => {
ctx.drawImage(img, 0, 0)
ctx.font = "20px Courier"
ctx.fillText(this.props.text, 210, 75)
}
render(){
var loadingTask = pdfjsLib.getDocument(pdfPath);
return (
<div>
<canvas ref = "myCanvas" width = {640} height = {425} />
<img ref = "image" src= {this.state.file} className = "hidden" />
</div>
)
}
}
webpack:
module.exports = {
mode: "development",
entry: {
'main': './client/reactApp/index.js',
'pdf.worker': 'pdfjs-dist/build/pdf.worker.entry'
},
output: {
path: path.resolve(__dirname, "static/dist"),
filename: "[name].bundle.js"
},
watch: true,
module: {
rules: [
{ test: /\.(jpg|png|gif|svg|pdf)$/,
use: [ { loader: 'file-loader', options: { name: '[name].[ext]', outputPath: './assets/images/' } } ] },
{
test: /\.m?js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env', "@babel/preset-react"],
plugins: [
['@babel/plugin-proposal-object-rest-spread'],['@babel/plugin-proposal-class-properties']
]
}
}
},
{
test: /\.css$/,
use: ["style-loader", "css-loader"]
}
]
}
}
Это именно то, чего он не делает. `import pdfPath from '../../../../ static / dist / assets / images / sample.pdf';` Я попытался изменить путь к файлу. Но сервер ищет файлы в localhost:5000/assets/images/samplestuff.pdf
В коде вы импортируете файл с именем sample.pdf, но в сообщении об ошибке, которое вы включили, есть файл с именем sampleStuff.pdf.
Извините, это была опечатка. Несмотря на то, что вы указали правильное имя файла, получите ту же ошибку.





Вы должны настроить сервер, работающий на
localhost:5000, так, чтобы он смотрел в соответствующий каталог. Вопрос помеченreactjs, но реагировать не обслуживает статические файлы. Для этого вам нужно использовать какой-то веб-сервер.