Skip to content

Instantly share code, notes, and snippets.

@mrflip
Last active October 31, 2022 21:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mrflip/9b8d598e5f06f210bfed9f7c4972cafa to your computer and use it in GitHub Desktop.
Save mrflip/9b8d598e5f06f210bfed9f7c4972cafa to your computer and use it in GitHub Desktop.
md-to-pdf on alpine node box demonstrated
  1. git clone https://gist.github.com/mrflip/9b8d598e5f06f210bfed9f7c4972cafa md2pdf_gist
    • or whatever the url of this page is.
  2. cd md2pdf_gist
  3. Run the commands in RUNME.sh: bash RUNME.sh

Once on the machine,

  1. for a demo of api usage run node ./md2pdf2wtf/md2pdfDemo.js
  2. to try the cli, run node ./node_modules/md-to-pdf/dist/cli.js --launch-options='{"args":["--no-sandbox", "--headless","--disable-gpu", "--disable-dev-shm-usage"]}' /home/tkapi/md2pdf2wtf/foo.md
FROM node:18.9-alpine3.15
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
RUN apk add --no-cache chromium nss freetype harfbuzz ca-certificates ttf-freefont ttf-freefont curl gnupg bash dumb-init tar git git-lfs ruby jq python3 postgresql-client nano
RUN addgroup -S tkapi && adduser -S -G tkapi tkapi
WORKDIR /home/tkapi
COPY md2pdf2wtf/ /home/tkapi/md2pdf2wtf/
RUN chown -R tkapi:tkapi /home/tkapi
RUN cd /home/tkapi/md2pdf2wtf && npm install
#
RUN node ./md2pdf2wtf/md2pdfDemo.js
RUN ls -l /tmp && rm /tmp/foo.pdf
# cd ~ ; git clone "https://github.com/simonhaenisch/md-to-pdf"
# cd md-to-pdf
# npm install
# node ./dist/cli.js --launch-options='{"args":["--no-sandbox", "--headless","--disable-gpu", "--disable-dev-shm-usage"]}' /home/tkapi/md2pdf2wtf/foo.md
RUN chown -R tkapi:tkapi /home/tkapi ; chown -R tkapi:tkapi /tmp/foo* ; true
USER tkapi

HELLO THERE

I am Mark, Down for whatever.

const { mdToPdf } = require('md-to-pdf');
async function doit() {
console.log('hi');
const pdf = await mdToPdf({
path: '/home/tkapi/md2pdf2wtf/foo.md'
}, {
dest: '/tmp/foo.pdf',
launch_options: { args: ['--no-sandbox', '--headless', '--disable-gpu', '--disable-dev-shm-usage'] },
}).catch(console.error);
console.log('pdf', pdf);
}
doit()
{
"name": "foo",
"version": "1.0.0",
"description": "",
"main": "foo.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"md-to-pdf": "^5.1.0",
"puppeteer": "^13.5.0"
}
}
const puppeteer = require('puppeteer')
async function doit() {
const browser = await puppeteer.launch({
headless: true, executablePath: '/usr/bin/chromium-browser',
args: [ '--no-sandbox', '--headless','--disable-gpu', '--disable-dev-shm-usage' ]
}).then((res) => { console.log(res) ; return res })
console.log('bb', browser); const page = await browser.newPage();
const gg = await page.goto("https://media.tenor.com/zrpyKEyxZGwAAAAd/fat-cat-laser-eyes.gif"); console.log('gg', gg)
const ss = await page.screenshot({ path: "/tmp/foo.png" }); console.log('screenshot', ss)
browser.close()
}; doit()
mkdir -p md2pdf2wtf
cp * md2pdf2wtf/
docker build -f Dockerfile-md2pdf2wtf --tag md2pdf2wtf:latest .
docker rm md2pdf2wtf
docker run -it --name md2pdf2wtf md2pdf2wtf sh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment