# 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
```