Introduction
Converting webpages into PDFs is a common requirement for preserving the layout and content of webpages. In this blog post, we will walk you through the process of setting up a server using the WEB2PDF project which leverages Docker and Puppeteer for this purpose.
Prerequisites
- Docker and Docker Compose installed on your system.
Steps:
- Pull the WEB2PDF Docker image from Docker Hub using the command:
docker pull shinchven/web2pdf
- Create a
docker-compose.ymlfile with the following content to set up the service:
version: '3.5'
services:
web:
build:
context: .
dockerfile: Dockerfile
image: shinchven/web2pdf
container_name: web2pdf
restart: always
ports:
- "3040:3030"
volumes:
- ./output:/usr/src/app/public/output
- Navigate to the directory containing the
docker-compose.ymlfile and run the command to start the service:
docker-compose up -d
Usage
- To convert a webpage to PDF, you can use either the GET or POST HTTP methods as shown below:
curl "http://localhost:3040/generate-pdf?url=https://www.google.com&filename=google.pdf"
or
curl -X POST -F "url=https://www.google.com" -F "filename=google.pdf" http://localhost:3040/generate-pdf
This setup will allow you to easily convert webpages into PDFs by sending a simple HTTP request to the server.
Parameters
The service accepts several parameters to customize the output:
| Parameter | Description | Default Value |
|---|---|---|
url |
The URL of the web page to convert into a PDF. | (none) |
filename |
The name of the output PDF file. | A UUID |
pdfOptions |
Options to pass to the Puppeteer's pdf method. |
undefined |
redirect |
If set to true, the service will redirect to the generated PDF file. |
false |
Please note that the url parameter is required. If no filename is provided, a UUID will be used as the file name. The pdfOptions parameter can be used to pass any additional options to the Puppeteer's pdf method. If redirect is set to true, the service will redirect to the generated PDF file instead of returning a JSON response.
