Cookbook/PDF files
From HaskellWiki
(Difference between revisions)
(→Drawing a simple text) |
(→Drawing a simple text) |
||
| Line 60: | Line 60: | ||
* draw on a given page using [http://hackage.haskell.org/packages/archive/HPDF/latest/doc/html/Graphics-PDF-Document.html#v%3AdrawWithPage drawWithPage] and the Draw action from above | * draw on a given page using [http://hackage.haskell.org/packages/archive/HPDF/latest/doc/html/Graphics-PDF-Document.html#v%3AdrawWithPage drawWithPage] and the Draw action from above | ||
| - | + | Example: | |
| - | + | <haskell> | |
| + | import Graphics.PDF | ||
| + | |||
| + | main :: IO () | ||
| + | main = do | ||
| + | let outputFileName= "test3.pdf" | ||
| + | let documentInfo = standardDocInfo | ||
| + | let defaultPageSize = PDFRect 0 0 200 300 | ||
| + | |||
| + | runPdf outputFileName documentInfo defaultPageSize $ do | ||
| + | let pdfString = toPDFString "Hello World!" | ||
| + | let pdfFont = PDFFont Times_Roman 32 | ||
| + | let pdfText = text pdfFont 10.0 10.0 pdfString | ||
| + | let drawAction = drawText pdfText | ||
| + | page <- addPage Nothing | ||
| + | drawWithPage page drawAction | ||
| + | </haskell> | ||
Revision as of 08:47, 24 April 2009
For the following recipes you need to install HPDF.
1 Creating an empty PDF file
runPdf generates a PDF file in the file system. You need to pass it four things:
- a file name for the PDF file
- document information, an instance of PDFDocumentInfo. You can use the data generated by standardDocInfo.
- the default page size, an instance of PDFRect.
- a PDF Action
Let's create an empty PDF file with the name "test1.pdf". We use addPage to add an empty page.
import Graphics.PDF main :: IO () main = do let outputFileName= "test1.pdf" let documentInfo = standardDocInfo let defaultPageSize = PDFRect 0 0 200 300 runPdf outputFileName documentInfo defaultPageSize $ do addPage Nothing
2 Pages with different sizes
If you pass "Nothing" to addPage, the default page size will be used for the size of the new page. We can pass it a different size (an instance of PDFRect).
Let’s create three pages, the last two pages with different dimensions:
import Graphics.PDF main :: IO () main = do let outputFileName= "test2.pdf" let documentInfo = standardDocInfo let defaultPageSize = PDFRect 0 0 200 300 runPdf outputFileName documentInfo defaultPageSize $ do addPage Nothing addPage $ Just $ PDFRect 0 0 100 100 addPage $ Just $ PDFRect 0 0 150 150
3 Drawing a simple text
To draw a simple text you need to take the following steps:
- convert the text to a PDFString using toPDFString
- create a PDFFont, passing it
- a FontName
- a font size
- create a PDFText using text and the data above
- create a Draw action using drawText and the PDFText from above
- draw on a given page using drawWithPage and the Draw action from above
Example:
import Graphics.PDF main :: IO () main = do let outputFileName= "test3.pdf" let documentInfo = standardDocInfo let defaultPageSize = PDFRect 0 0 200 300 runPdf outputFileName documentInfo defaultPageSize $ do let pdfString = toPDFString "Hello World!" let pdfFont = PDFFont Times_Roman 32 let pdfText = text pdfFont 10.0 10.0 pdfString let drawAction = drawText pdfText page <- addPage Nothing drawWithPage page drawAction
