Personal tools

Cookbook/PDF files

From HaskellWiki

< Cookbook(Difference between revisions)
Jump to: navigation, search
m (Creating an empty PDF file)
m
Line 18: Line 18:
 
main :: IO ()
 
main :: IO ()
 
main = do
 
main = do
let outputFileName= "test1.pdf"
+
let pdfFileName= "test1.pdf"
 
let documentInfo = standardDocInfo
 
let documentInfo = standardDocInfo
 
let defaultPageSize = PDFRect 0 0 200 300
 
let defaultPageSize = PDFRect 0 0 200 300
 
 
runPdf outputFileName documentInfo defaultPageSize $ do
+
runPdf pdfFileName documentInfo defaultPageSize $ do
 
addPage Nothing
 
addPage Nothing
 
</haskell>
 
</haskell>
Line 38: Line 38:
 
main :: IO ()
 
main :: IO ()
 
main = do
 
main = do
let outputFileName= "test2.pdf"
+
let pdfFileName = "test2.pdf"
 
let documentInfo = standardDocInfo
 
let documentInfo = standardDocInfo
 
let defaultPageSize = PDFRect 0 0 200 300
 
let defaultPageSize = PDFRect 0 0 200 300
 
 
runPdf outputFileName documentInfo defaultPageSize $ do
+
runPdf pdfFileName documentInfo defaultPageSize $ do
 
addPage Nothing
 
addPage Nothing
 
addPage $ Just $ PDFRect 0 0 100 100
 
addPage $ Just $ PDFRect 0 0 100 100
Line 69: Line 69:
 
main :: IO ()
 
main :: IO ()
 
main = do
 
main = do
let outputFileName= "test3.pdf"
+
let pdfFileName = "test3.pdf"
 
let documentInfo = standardDocInfo
 
let documentInfo = standardDocInfo
 
let defaultPageSize = PDFRect 0 0 200 300
 
let defaultPageSize = PDFRect 0 0 200 300
Line 77: Line 77:
 
let pdfText = text pdfFont 10.0 10.0 pdfString
 
let pdfText = text pdfFont 10.0 10.0 pdfString
 
 
runPdf outputFileName documentInfo defaultPageSize $ do
+
runPdf pdfFileName documentInfo defaultPageSize $ do
 
page <- addPage Nothing
 
page <- addPage Nothing
   

Revision as of 11:05, 25 April 2009

For the following recipes you need to install HPDF, a pure Haskell PDF generation library.

1 Creating an empty PDF file

runPdf generates a PDF file in the file system. You need to pass it four things:

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 pdfFileName= "test1.pdf"
  let documentInfo = standardDocInfo 
  let defaultPageSize = PDFRect 0 0 200 300
 
  runPdf pdfFileName 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 pdfFileName = "test2.pdf"
  let documentInfo = standardDocInfo 
  let defaultPageSize = PDFRect 0 0 200 300
 
  runPdf pdfFileName 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:

Example:

import Graphics.PDF
 
main :: IO ()
main = do
  let pdfFileName = "test3.pdf"
  let documentInfo = standardDocInfo 
  let defaultPageSize = PDFRect 0 0 200 300
 
  let pdfString = toPDFString "Hello World!"
  let pdfFont = PDFFont Times_Roman 32
  let pdfText = text pdfFont 10.0 10.0 pdfString
 
  runPdf pdfFileName documentInfo defaultPageSize $ do
    page <- addPage Nothing
 
    drawWithPage page $ do
      drawText pdfText