Skip to content

Commit 1ea2430

Browse files
authored
Merge pull request #436 from bitfinexcom/staging
Release version to master
2 parents 56cbe76 + 1bc61fb commit 1ea2430

File tree

8 files changed

+81
-42
lines changed

8 files changed

+81
-42
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
submodules: recursive
2121
- uses: actions/setup-node@v4
2222
with:
23-
node-version: 18.17.1
23+
node-version: 20.18.1
2424
- name: Setup configs
2525
run: |
2626
cp config/common.json.example config/common.json \

Dockerfile.express

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM node:18.17.1-alpine3.18
1+
FROM node:20.18.1-alpine3.20
22

33
ENV BIND_HOST="0.0.0.0"
44

Dockerfile.grenache-grape

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM node:18.17.1-alpine3.18
1+
FROM node:20.18.1-alpine3.20
22

33
ENV BIND_HOST="0.0.0.0"
44

Dockerfile.ui-builder

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM node:18.17.1-alpine3.18
1+
FROM node:20.18.1-alpine3.20
22

33
WORKDIR /home/node/bfx-report-ui
44

Dockerfile.worker

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,42 @@
1-
FROM node:18.17.1-bookworm
1+
FROM node:20.18.1-alpine3.20
22

33
ARG GRC_VER="0.7.1"
44

55
WORKDIR /home/node/grenache-cli
66

7-
RUN apt-get update -y \
8-
&& apt-get install -y --no-install-recommends \
9-
jq \
10-
xxd \
11-
git \
12-
&& apt-get clean \
13-
&& rm -rf /var/lib/apt/lists/*
7+
RUN apk update && apk add --no-cache --virtual \
8+
.gyp \
9+
python3 \
10+
make \
11+
jq \
12+
help2man \
13+
gcc \
14+
musl-dev \
15+
autoconf \
16+
automake \
17+
libtool \
18+
pkgconfig \
19+
file \
20+
patch \
21+
bison \
22+
clang \
23+
flex \
24+
curl \
25+
perl \
26+
perl-dev \
27+
wget \
28+
g++ \
29+
git \
30+
openssh \
31+
bash \
32+
chromium \
33+
nss \
34+
freetype \
35+
harfbuzz \
36+
ca-certificates \
37+
ttf-freefont
38+
39+
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
1440

1541
RUN wget -c https://github.com/bitfinexcom/grenache-cli/releases/download/${GRC_VER}/grenache-cli-${GRC_VER}.tar.xz \
1642
&& tar -xf grenache-cli-${GRC_VER}.tar.xz \

bfx-report-ui

Submodule bfx-report-ui updated 41 files

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "bfx-reports-framework",
3-
"version": "4.21.2",
3+
"version": "4.21.3",
44
"description": "Bitfinex reports framework",
55
"main": "worker.js",
66
"license": "Apache-2.0",
@@ -13,11 +13,11 @@
1313
"bignumber.js": "9.1.2",
1414
"csv": "5.5.3",
1515
"grenache-nodejs-ws": "git+https://github.com:bitfinexcom/grenache-nodejs-ws.git",
16-
"html-pdf": "3.0.1",
1716
"inversify": "6.0.1",
1817
"lib-js-util-base": "git+https://github.com/bitfinexcom/lib-js-util-base.git",
1918
"lodash": "4.17.21",
2019
"moment": "2.29.4",
20+
"puppeteer": "24.1.0",
2121
"uuid": "9.0.0",
2222
"yargs": "17.2.1"
2323
},

workers/loc.api/generate-report-file/pdf-writer/index.js

Lines changed: 40 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const path = require('path')
55
const argv = require('yargs').argv
66
const { v4: uuidv4 } = require('uuid')
77

8-
const pdf = require('html-pdf')
8+
const puppeteer = require('puppeteer')
99

1010
const MainPdfWriter = require(
1111
'bfx-report/workers/loc.api/generate-report-file/pdf-writer'
@@ -46,6 +46,7 @@ class PdfWriter extends MainPdfWriter {
4646
this.processMessageManager = processMessageManager
4747

4848
this.isElectronjsEnv = argv.isElectronjsEnv
49+
this.shouldZoomBeAdjusted = false
4950

5051
this.addTemplates({
5152
fileNames: TEMPLATE_FILE_NAMES,
@@ -61,9 +62,7 @@ class PdfWriter extends MainPdfWriter {
6162
const {
6263
template = 'No data',
6364
format = 'portrait',
64-
orientation = 'Letter',
65-
headerHeight = '65mm',
66-
footerHeight = '28mm'
65+
orientation = 'Letter'
6766
} = args ?? {}
6867

6968
if (this.isElectronjsEnv) {
@@ -74,30 +73,29 @@ class PdfWriter extends MainPdfWriter {
7473
})
7574
}
7675

77-
const headerOpt = headerHeight
78-
? { header: { height: headerHeight } }
79-
: {}
80-
const footerOpt = footerHeight
81-
? { footer: { height: footerHeight } }
82-
: {}
83-
84-
return await new Promise((resolve, reject) => {
85-
pdf.create(template, {
86-
...headerOpt,
87-
...footerOpt,
88-
89-
format,
90-
orientation,
91-
type: 'pdf',
92-
timeout: 90000,
93-
childProcessOptions: {
94-
env: { OPENSSL_CONF: '/dev/null' }
95-
}
96-
}).toBuffer((error, buffer) => {
97-
if (error) return reject(error)
98-
resolve(buffer)
99-
})
76+
const browser = await puppeteer.launch({
77+
args: ['--no-sandbox', '--disable-gpu']
78+
})
79+
const page = await browser.newPage()
80+
await page.setContent(template, {
81+
waitUntil: 'domcontentloaded'
10082
})
83+
await page.emulateMediaType('print')
84+
const u8ArrayPdf = await page.pdf({
85+
landscape: format !== 'portrait',
86+
format: orientation,
87+
margins: {
88+
top: 0,
89+
bottom: 0,
90+
left: 0,
91+
right: 0
92+
},
93+
displayHeaderFooter: true,
94+
footerTemplate: this.#getFooterTemplate(args)
95+
})
96+
await browser.close()
97+
98+
return Buffer.from(u8ArrayPdf)
10199
}
102100

103101
async createPDFBufferUnderElectron (args) {
@@ -145,6 +143,21 @@ class PdfWriter extends MainPdfWriter {
145143

146144
return Buffer.from(buffer)
147145
}
146+
147+
#getFooterTemplate (args) {
148+
const translate = this.getTranslator(args?.language ?? 'en')
149+
150+
return `\
151+
<span style="
152+
position: absolute;
153+
right: 10px;
154+
bottom: 10px;
155+
font-weight: 400;
156+
font-size: 8px;
157+
">
158+
${translate('Page', 'template.page')} <span class=pageNumber></span> ${translate('from', 'template.from')} <span class=totalPages></span>
159+
</span>`
160+
}
148161
}
149162

150163
decorateInjectable(PdfWriter, depsTypes)

0 commit comments

Comments
 (0)