日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
使用 React-Pdf 打造在線簡歷生成器

前言

React-PDF 簡介

React PDF 是一個使用 React 創(chuàng)建 PDF 文件的工具,支持在瀏覽器、移動設(shè)備和服務(wù)器上創(chuàng)建PDF文件。

成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)由有經(jīng)驗(yàn)的網(wǎng)站設(shè)計(jì)師、開發(fā)人員和項(xiàng)目經(jīng)理組成的專業(yè)建站團(tuán)隊(duì),負(fù)責(zé)網(wǎng)站視覺設(shè)計(jì)、用戶體驗(yàn)優(yōu)化、交互設(shè)計(jì)和前端開發(fā)等方面的工作,以確保網(wǎng)站外觀精美、網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)易于使用并且具有良好的響應(yīng)性。

可以用它們輕松地將內(nèi)容呈現(xiàn)到文檔中,我們可以使用 CSS 屬性進(jìn)行樣式設(shè)置,使用 flexbox 進(jìn)行布局,它支持渲染文本、圖像、 svg 等等,詳情可以參考官網(wǎng)

程序?qū)崿F(xiàn)

今天我將使用 React-pdf 和 next.js 來構(gòu)建一個在線簡歷生成器,先一起來看下效果

在線地址:https://cv.runjs.cool/

初始化項(xiàng)目

yarn create next-app --example with-ant-design next-resume 
cd next-resume
yarn add @react-pdf/renderer

React-pdf 渲染需要一些額外的依賴項(xiàng)和 webpack5 配置。

yarn add process browserify-zlib stream-browserify util buffer assert

這一步驟是因?yàn)?React-pdf 構(gòu)建在 PDFKit 的基礎(chǔ)之上,在使用瀏覽器時需要使用兩個 node.js API polyfill。而 webpack 5 不再包括自動引入 nodejs polyfill ,我們必須選擇進(jìn)入所有我們想要的 polyfill。為了做到這一點(diǎn),我們必須為我們的項(xiàng)目添加一些依賴項(xiàng):

在根目錄下創(chuàng)建一個 next.config.js

module.exports = {
reactStrictMode: true,
webpack: (config, { buildId, dev, isServer, defaultLoaders, webpack }) => {
config.resolve.fallback = {
...config.resolve.fallback,
module: "empty",
dgram: "empty",
dns: "mock",
fs: "empty",
http2: "empty",
net: "empty",
tls: "empty",
child_process: "empty",
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"),
};
config.plugins.push(
new webpack.ProvidePlugin({
Buffer: ["buffer", "Buffer"],
process: "process/browser",
})
);
return config;
},
};

實(shí)現(xiàn)邏輯

新建在 App.js 將用戶輸入實(shí)時綁定到 state 中,然后時時渲染預(yù)覽頁面

import Preview from './component/Preview'
import React, { useState } from 'react'
function App() {
const [profile, setProfile] = useState({
name: "狂奔滴小馬",
about: "分享 Javascript 熱門\n框架,探索 web 極致\n優(yōu)化體驗(yàn)。",
email: "maqi1520@qq.com",
avatar:"https://p6-passport.byteacctimg.com/img/user-avatar/585e1491713363bc8f67d06c485e8260~300x300.image",
})

const handleChange = (name, value) => {
setProfile({ ...profile, [name]: value })
}

return (
style={{
width: '100%',
height: '100vh',
display: 'flex',
}}
>



name='name'
defaultValue={profile.name}
onChange={(e) => {
handleChange(e.target.name, e.target.value)
}}
/>



name='avatar'
defaultValue={profile.avatar}
onChange={(e) => {
handleChange(e.target.name, e.target.value)
}}
/>



name='about'
defaultValue={profile.about}
onChange={(e) => {
handleChange(e.target.name, e.target.value)
}}
/>



name='email'
defaultValue={profile.email}
onChange={(e) => {
handleChange(e.target.name, e.target.value)
}}
/>




)
}

export default App

Preview.js 是頁面的右側(cè)部分,并嵌入我們將要創(chuàng)建的PDF文檔。

另外我們還有 PDFDownloadLink,它可以用來下載 pdf 文件。

import React from 'react'
import { Document, Page, PDFViewer, PDFDownloadLink } from '@react-pdf/renderer'
import LeftSection from './LeftSection'
import RightSection from './RightSection'
import styles from '../styles'

const Preview = ({ profile }) => {
return (

showToolbar={false}
style={{
width: '100%',
height: '95%',
}}
>