正如文档所说,我确认这在一个项目中有效,但正如您所指出的,由于某种原因,它在他们自己的示例站点上不起作用。
为了测试,我创建了一个新的反应项目,使用create-react-app
:
yarn create react-app react-pdf-image
安装react-pdf
:
cd react-pdf-image
yarn add @react-pdf/renderer
注意:刚刚发布了一个新版本create-react-app
(5.0.0),它使用了 webpack v5,目前一些包像react-pdf
不再开箱即用。craco
我不得不通过包向 webpack 添加额外的配置。
安装附加包:
yarn add process browserify-zlib stream-browserify util buffer assert @craco/craco
scripts
将部分更改package.json
如下:
"scripts": {
"start": "craco start",
"build": "craco build",
"test": "craco test",
"eject": "react-scripts eject"
},
接下来在项目的根目录中创建一个craco.config.js
包含以下内容的新文件:
const webpack = require("webpack");
module.exports = {
webpack: {
configure: {
resolve: {
fallback: {
process: require.resolve("process/browser"),
zlib: require.resolve("browserify-zlib"),
stream: require.resolve("stream-browserify"),
util: require.resolve("util"),
buffer: require.resolve("buffer"),
asset: require.resolve("assert"),
},
},
plugins: [
new webpack.ProvidePlugin({
Buffer: ["buffer", "Buffer"],
process: "process/browser",
}),
],
},
},
};
希望这个问题能够得到解决,如果是这样,我将删除这些额外的步骤。
最后,src/App.js
用以下代码替换文件的内容:
import { Document, Image, Page, PDFViewer, Text } from "@react-pdf/renderer";
const MyDocument = () => {
return (
<Document>
<Page>
<Text>Image test</Text>
<Image src="https://storage.googleapis.com/cbb_logos/conf_logos/conf-1-logo.png" />
</Page>
</Document>
);
};
const App = () => (
<div>
<PDFViewer>
<MyDocument />
</PDFViewer>
</div>
);
export default App;
回到项目的根目录,运行yarn start
,您应该会看到带有文本和图像的渲染 PDF。