GithubHelp home page GithubHelp logo

geogramdotcom / pdfgen Goto Github PK

View Code? Open in Web Editor NEW

This project forked from hyperboloide/pdfgen

0.0 0.0 0.0 2.25 MB

HTTP service to generate PDF from Json requests

License: MIT License

Dockerfile 3.50% Makefile 2.39% Go 69.15% Shell 0.75% HTML 24.22%

pdfgen's Introduction

pdfgen

Build Status Go Report Card

HTTP service to generate PDF from Json requests

Install and run

The recommended method is to use the docker container by mounting your template directory (here with the provided example template directory):

docker run --rm -it -p 8888:8888 \
  --mount src=my_templates/,target=/etc/pdfgen/templates,type=bind \
  hyperboloide/pdfgen

If you rather not using Docker, you need to install wkhtmltopdf first, then run:

go install github.com/hyperboloide/pdfgen
PDFGEN_TEMPLATES=./templates pdfgen

Once installed you can test with something like this:

curl -H "Content-Type: application/json" -X POST -d @my_json_file.json \
  http://localhost:8888/invoice > result.pdf

Note that the rendering may differ depending on your os (especially OSX) and installed fonts, that's why it is recommended to test and develop on the Docker environment to get the same result in production.

Templates

The PDF are generated from HTML templates. These templates closely ressemble Django Templates.

the following template:

<h1>Hello, {{ user }}</h1>

can be generated with a application/json POST request:

{"user": "fred"}

The response is of type application/pdf and contains the resulting PDF.

Each PDF template should be in it's own directory under the root directory defined in the PDFGEN_TEMPLATES environment variable.

The urls endpoints will be generated from these directories names. For example a template in the directory invoice will be a reachable at a url that look like that: http://host:port/invoice

The template directory must contain an index.html file and optionnaly a footer.html file. Other assets like images and CSS should be in that directory too. Note that each PDF is generated in isolation and so your templates should use absolutes paths. For example if you use bower and have a path like that: invoices/bower_components/ you should have:

<link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css" media='screen,print'>

Finally don't forget to set the PDFGEN_TEMPLATES env variable to the path of your templates parent directory Alternatively you copy your templates to either : /etc/pdfgen/templates or ~/.templates.

Adding fonts

You could just create a new container with your fonts and rebuild the cache. Bellow an example Dockerfile.

FROM hyperboloide/pdfgen
COPY my_fonts /usr/local/share/fonts/
RUN  fc-cache -f -v

pdfgen's People

Contributors

fdelbos avatar

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.