pdf {grDevices}R Documentation

PDF Graphics Device


pdf starts the graphics device driver for producing PDF graphics.


pdf(file = ifelse(onefile, "Rplots.pdf", "Rplot%03d.pdf"),
    width = 6, height = 6, onefile = TRUE, family = "Helvetica",
    title = "R Graphics Output", fonts = NULL, version = "1.1",
    paper, encoding, bg, fg, pointsize)


file a character string giving the name of the file.
width, height the width and height of the graphics region in inches.
onefile logical: if true (the default) allow multiple figures in one file. If false, generate a file name containing the page number.
family the font family to be used, one of "AvantGarde", "Bookman", "Courier", "Helvetica", "Helvetica-Narrow", "NewCenturySchoolbook", "Palatino" or "Times". Note the other specifications allowed for postscript are not available.
title title string to embed in the file.
paper the size of paper in the printer. The choices are "a4", "letter", "legal" and "executive" (and these can be capitalized). The default is "special", which means that the width and height specify the paper size. A further choice is "default"; if this is selected, the papersize is taken from the option "papersize" if that is set and to "a4" if it is unset or empty.
encoding the name of an encoding file. Defaults to "WinAnsi.enc" in the ‘R_HOME/afm’ directory, which is used if the path does not contain a path separator. An extension ".enc" can be omitted.
pointsize the default point size to be used.
bg the default background color to be used.
fg the default foreground color to be used.
fonts a character vector specifying device-independent R graphics font family names for fonts which will be included in the PDF file.
version a string describing the PDF version that will be used to produce output.


pdf() opens the file file and the PDF commands needed to plot any graphics requested are sent to that file.

The family argument can be used to specify either a device-independent R graphics font family (see postscriptFonts) or a PDF-specific font family as the initial/default font for the device.

If a device-independent R graphics font family is specified (e.g., via par(family=) in the graphics package), the PDF device makes use of the PostScript font mappings to convert the R graphics font family to a PDF-specific font family description. R does not embed fonts in the PDF file though, so it is only possible to use mappings to the font families that are assumed to be available in a PDF viewer: "Times" or "Times New Roman", "Helvetica" or "Arial", "Courier", "Symbol", and "ZapfDingbats".

See postscript for details of encodings, as the internal code is shared between the drivers. The native PDF encoding is given in file ‘PDFDoc.enc’.

pdf writes uncompressed PDF. It is primarily intended for producing PDF graphics for inclusion in other documents, and PDF-includers such as pdftex are usually able to handle compression.

At present the PDF is fairly simple, with each page being represented as a single stream. The R graphics model does not distinguish graphics objects at the level of the driver interface.

The version argument modifies the sort of PDF code that gets produced. At the moment this only concerns the production of transparent output. The version must be greater than 1.4 for transparent output to be produced. Specifying a lower version number may be useful if you want to produce PDF output that can be viewed on older PDF viewers.

Line widths as controlled by par(lwd=) are in multiples of 1/96inch. Multiples less than 1 are allowed. pch="." with cex = 1 corresponds to a square of side 1/72 inch.


Acrobat Reader does not use the fonts specified but rather emulates them from multiple-master fonts. This can be seen in imprecise centering of characters, for example the multiply and divide signs in Helvetica.

See Also

postscriptFonts, Devices, postscript


## Not run: 
## Test function for encodings
TestChars <- function(encoding="ISOLatin1", ...)
    pdf(encoding=encoding, ...)
    plot(c(-1,16), c(-1,16), type="n", xlab="", ylab="", xaxs="i", yaxs="i")
    title(paste("Centred chars in encoding", encoding))
    grid(17, 17, lty=1)
    for(i in c(32:255)) {
        x <- i 
        y <- i 
        points(x, y, pch=i)
## there will be many warnings.
## doesn't view properly in US-spec Acrobat 5.05, but gs7.04 works.
## Lots of characters are not centred.
## End(Not run)

[Package grDevices version 2.1.0 Index]