_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][haskell]. [diagrams]: http://projects.haskell.org/diagrams/ [haskell]: http://www.haskell.org/haskellwiki/Haskell [HPDF]: http://hackage.haskell.org/packages/archive/HPDF/1.4.5/doc/html/Graphics-PDF-Documentation.html _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. ``` haskell 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