# makepdf **Repository Path**: ccxili/makepdf ## Basic Information - **Project Name**: makepdf - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-12-12 - **Last Updated**: 2022-03-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 项目端口号:7001 ## 项目架构 eggjs => 使用pm2 维护启动进程 server.js => egg.startCluster({workers:1,baseDir:__dirname,port:7001,hostname:127.0.0.1}) ## pdf字体为:开源字体-思源黑体 ### 字体安装步骤 (centos7) ```shell # 下载centos字体管理 yum -y install fontconfig # /usr/shared里有fonts和fontconfig文件夹 /usr/share/fonts -> mkdir chinese # 将字体包复制进/usr/share/chinese文件中 # 修改文件夹权限 chmod -R 755 /usr/share/fonts/chinese # 接下来需要安装ttmkfdir来搜索目录中所有的字体信息,并汇总生成fonts.scale文件,输入命令 yum -y install ttmkfdir # 执行命令 ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir # 最后一步就是修改字体配置文件了,首先通过编辑器打开配置文件 vim /etc/fonts/fonts.conf /usr/share/fonts/chinese fc-cache fc-list ``` ## 项目依赖下载 - npm config set registry https://registry.nlark.com/ - npm install - canvas在centos 部署,需要 npx node-pre-gyp rebuild -C ./node_modules/canvas进行源码编译 - canvas编译需要的环境 https://github.com/Automattic/node-canvas/wiki/Installation%3A-Fedora-and-other-RPM-based-distributions ## puppeteer 忽略安装chromium ```shell # 忽略Chromium安装 $ npm install puppeteer --ignore-scripts --save # 下载一个Chromium放到指定位置 # linux: '', # mac: '', # win32: '', # win64: '', # 下载时将%d替换为具体编号,编号可以在node_modules/puppeteer/package.json中puppeteer.chromium_revision获得。拼接好链接后直接在浏览器就可以直接下载了(当然,你得科学上网才可以)。 # 下载后上传到服务器,存储位置为node_modules/puppeteer/.local-chromium/linux-%d,.local-chromium/linux-%d文件夹需要自己创建,同样将%d替换为具体编号。将下载的Chromium压缩包上传到该位置后解压。 # "puppeteer": "^2.0.0", # ``` ### 服务器安装 chrome - 创建Rep源 ```shell $ sudo touch /etc/yum.repos.d/google.repo ``` - 使用vim打开文件填入内容 ```shell $ sudo vim /etc/yum.repos.d/google.repo # 填入一下内容 [google] name=Google-x86_64 baseurl=http://dl.google.com/linux/rpm/stable/x86_64 enabled=1 gpgcheck=0 gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub ``` - 更新 yum ```shell $ sudo yum update ``` - 下载chrome ```shell $ sudo yum install google-chrome-stable ``` ### puppeteer安装 - 确保npm和node都安装好了 - 安装puppeteer ```shell npm install puppeteer --ignore-scripts ``` - 使用puppeteer ```javascript const browser = await puppeteer.launch({ args: ['--disable-dev-shm-usage', '--no-sandbox'], headless:true, executablePath:'/opt/google/chrome/chrome' }); ``` ## centos 7 buffer/cache 释放 ```shell $ free total used free shared buff/cache available Mem: 8073628 1374360 2004964 385620 4694304 5820840 Swap: 8388604 0 8388604 $ free -h total used free shared buff/cache available Mem: 7.7G 1.3G 1.9G 376M 4.5G 5.6G Swap: 8.0G 0B 8.0G $ sync #加入以下3条命令去释放cache/buff $ echo 1 > /proc/sys/vm/drop_caches $ echo 2 > /proc/sys/vm/drop_caches $ echo 3 > /proc/sys/vm/drop_caches $ free -h total used free shared buff/cache available Mem: 7.7G 1.3G 6.0G 376M 479M 5.8G Swap: 8.0G 0B 8.0G ``` ## linux(centos)上使用puppeteer,还需要安装一些依赖 ```shell #依赖库 $ yum install pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf2.x86_64 alsa-lib.x86_64 atk.x86_64 gtk3.x86_64 nss.x86_64 -y #字体 $ yum install ipa-gothic-fonts xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc -y ``` ## puppeteer 常见报错 ### 权限问题 ```shell Error: spawn /home/card-spider/node_modules/puppeteer/.local-chromium/linux-706915/chrome-linux/chrome EACCES at Process.ChildProcess._handle.onexit (internal/child_process.js:232:19) at onErrorNT (internal/child_process.js:407:16) at process._tickCallback (internal/process/next_tick.js:63:19) Emitted 'error' event at: at Process.ChildProcess._handle.onexit (internal/child_process.js:238:12) at onErrorNT (internal/child_process.js:407:16) at process._tickCallback (internal/process/next_tick.js:63:19) npm ERR! code ELIFECYCLE 复制代码 ``` #### 解决方法 - 处理权限 ```shell $ sudo chmod -R 777 /node_modules/puppeteer/.local-chromium/linux-706915/chrome-linux/chrome ```