PDF backend for diagrams drawing EDSL.
This package provides a modular backend for rendering diagrams created with the diagrams EDSL to PDF files. It uses HPDF making it suitable for use on any platform.
It is a very preliminary version where only the diagrams Logo generation has been tested.
The package provides the following modules:
Diagrams.Backend.Pdf.CmdLine- if you're just getting started with diagrams, begin here.Diagrams.Backend.Pdf- look at this next. The general API for the HPDF backend.
Additional documentation can be found in the README file distributed with the source tarball
diagrams-pdf is a an HPDF backend for diagrams. Diagrams is a powerful, flexible, declarative domain-specific language for creating vector graphics, using the Haskell programming language.
diagrams-pdf is a work in progress, and some features are not implemented yet. However, it is functional enough.
Installation
cabal update && cabal install diagrams-pdf
Usage
A simple example that uses diagrams-pdf to draw a square.
import Diagrams.Prelude
import Diagrams.Backend.Pdf.CmdLine
b1 = square 20 # lw 0.002
main = defaultMain (pad 1.1 b1)
Save this to file named Square.hs and compile this program:
ghc --make Square.hs
This will generate an executable which, when run produces a Pdf file. Run the executable with the --help option to find out more about how to call it.
$ ./Square --help
Command-line diagram generation.
Square [OPTIONS]
Common flags:
  -w --width=INT    Desired width of the output image (default 400)
  -h --height=INT   Desired height of the output image (default 400)
  -o --output=FILE  Output file
  -c --compressed   Compressed PDF file
  -? --help         Display help message
  -V --version      Print version information
You must pass an output file name with a .pdf extension to generate the PDF file.
$ ./Square -o square.pdf
Limitations
Two goals of the HPDF library were : powerful typesetting and no dependence on the OS libraries (for better portability). But, HPDF was also my first big library mainly done to learn. So I had to limit myself.
As a consequence, HPDF is only using the standard fonts defined in the PDF specification. It is not (yet) possible to include and use any other fonts.
So, for diagrams it is causing a problem : the face setting has nearly no meaning. Face is currently selected from the Italic and Oblique settings. Times is the default but when oblique is chosen, Helvetica is used.
I hope to improve this in future releases.
Here is a list of the fonts in HPDF:
- Helvetica
 - Helvetica_Bold
 - Helvetica_Oblique
 - Helvetica_BoldOblique
 - Times_Roman
 - Times_Bold
 - Times_Italic
 - Times_BoldItalic
 - Courier
 - Courier_Bold
 - Courier_Oblique
 - Courier_BoldOblique
 - Symbol
 - ZapfDingbats.