按照文档所说,我已经证实了这项技术在项目中可行,但是正如你所指出的,在他们自己的示例网站上却无法正常工作。
为了进行测试,我使用create-react-app
创建了一个新的React项目:
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
请按以下方式更改package.json
中的scripts
部分:
"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。
path
替换为问题中的png文件时,它只显示白色空间。 - liquidki