Giter VIP home page Giter VIP logo

docker-html-to-pdf's Introduction

Convert html-to-pdf via dockerized chrome headless

Because currently the --print-to-pdf CLI switch does not allow disabling of header/footer the approach uses a nodejs script which connects to chrome via remote interface. It also executes 5s of javascript (virtual time) to ensure that the page is fully rendered.

BIG FAT WARNING - BREAKING CHANGES AHEAD!

If you came here because the container stopped working for you then probably you were using the latest tag instead of the stable versioned image.

The working directory has changed from /tmp/html-to-pdf to /workspace. It can be changed via WORKDIR docker argument and environment variable of the same name.

Additionally Alpine is now used instead of Ubuntu what has reduced the image size from ~800MB to ~100MB.

Also, there are a couple of additions: the built-in webserver, better logging and all-over code remake.

How to run it?

You need to mount the container's working directory (/workspace) locally to be able to get the output file.

docker run -v "$(pwd):/workspace" pink33n/html-to-pdf --url http://google.com --pdf out.pdf

Built-in static webserver

The /workspace directory is served on port 80, so you can render files from the directory mounted to this volume by using http://localhost/filename.html.

Chrome arguments

Chrome is started with these flags (beware, this may be unsecure in some rare circumstances!).

--no-sandbox --headless --disable-gpu --disable-web-security -–allow-file-access-from-files

This means that file:// should also work, nevertheless, using the built-in web server is recommended instead.

Also expired certificates should no longer be a problem and completely break some of the functionality like before.

Commandline arguments and the software that made this possible

For all of the commandline arguments please check out the documentation for the library doing the actual heavy lifting:

chrome-headless-render.

Ansible

ansible-html-to-pdf

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.