Rev 43088 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/grDevices/man/pdf.Rd% Part of the R package, http://www.R-project.org% Copyright 1995-2007 R Core Development Team% Distributed under GPL 2 or later\name{pdf}\alias{pdf}\title{PDF Graphics Device}%% The definitive doc is the source :-)%% ../../../main/devices.c & ../../../main/devPS.c\description{\code{pdf} starts the graphics device driver for producing PDFgraphics.}\usage{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 = "special", encoding, bg, fg, pointsize, pagecentre)}\arguments{\item{file}{a character string giving the name of the file.For use with \code{onefile=FALSE} give a C integer format suchas \code{"Rplot\%03d.pdf"} (the default in that case).(See \code{\link{postscript}} for further details.)}\item{width, height}{the width and height of the graphics region ininches.}\item{onefile}{logical: if true (the default) allow multiple figuresin one file. If false, generate a file name containing the pagenumber for each page.}\item{family}{the font family to be used, see \code{\link{postscript}}.}\item{title}{title string to embed as the \code{/Title} field in the file.}\item{fonts}{a character vector specifying \R graphics font familynames for fonts which will be included in the PDF file.}\item{version}{a string describing the PDF version that will berequired to view the output. This is a minimum, and will beincreased (with a warning) if necessary.}\item{paper}{the target paper size. The choices are\code{"a4"}, \code{"letter"}, \code{"legal"} (or \code{"us"}) and\code{"executive"} (and these can be capitalized), or \code{"a4r"}and \code{"USr"} for rotated (\sQuote{landscape}).The default is \code{"special"}, which means that the \code{width}and \code{height} specify the paper size. A further choice is\code{"default"}; if this is selected, thepapersize is taken from the option \code{"papersize"}if that is set and as \code{"a4"} if it is unset or empty.}\item{encoding}{the name of an encoding file. See\code{\link{postscript}} for details.}\item{bg}{the default background color to be used.}\item{fg}{the default foreground color to be used.}\item{pointsize}{the default point size to be used. Strictlyspeaking, in bp, that is 1/72 of an inch, but approximately in points.}\item{pagecentre}{logical: should the device region be centred on thepage? -- defaults to true, but is only relevant for\code{paper != "special"}.}}\details{\code{pdf()} opens the file \code{file} and the PDF commands needed toplot any graphics requested are sent to that file.The \code{file} argument is interpreted as a C integer format as usedby \code{\link{sprintf}}, with integer argument the page number.The default gives files \file{Rplot001.pdf}, \dots, \file{Rplot999.pdf},\file{Rplot1000.pdf}, \dots.The \code{family} argument can be used to specify a PDF-specificfont family as the initial/default font for the device.If a device-independent \R graphics font family is specified (e.g., via\code{par(family=)} in the graphics package), the PDF device makes useof the PostScript font mappings to convert the \R graphics font familyto a PDF-specific font family description. (See thedocumentation for \code{\link{pdfFonts}}.)\R does \emph{not} embed fonts in the PDF file, so it is onlystraightforward to use mappings to the font families that can beassumed to be available in any PDF viewer: \code{"Times"}(equivalently \code{"serif"}), \code{"Helvetica"} (equivalently\code{"sans"}), \code{"Courier"} (equivalently \code{"mono"}) and\code{"Symbol"} (equivalently \code{"symbol"}). Other families may bespecified, but it is the user's responsibility to ensure that thesefonts are available on the system and third-party software, e.g.,Ghostscript, may be required to embed the fonts so that the PDF can beincluded in other documents (e.g., LaTeX): see\code{\link{embedFonts}}. The URW-based families described for\code{\link{postscript}} can be used with viewers#ifdef unixset up to use URW fonts, which is usual with those based on\code{xpdf} or Ghostscript.#endif#ifdef windowssuch as GSView which utilise URW fonts.#endifSee \code{\link{postscript}} for details of encodings, as the internalcode is shared between the drivers. The native PDF encoding is givenin file \file{PDFDoc.enc}.\code{pdf} writes uncompressed PDF. It is primarily intended forproducing PDF graphics for inclusion in other documents, andPDF-includers such as \code{pdftex} are usually able to handlecompression.The PDF produced is fairly simple, with each page being representedas a single stream. The \R graphics model does not distinguishgraphics objects at the level of the driver interface.The \code{version} argument declares the version of PDF that getsproduced. The version must be at least 1.4 for semi-transparentoutput to be understood, and at least 1.3 if CID fonts are to be used:if these features are used the version number will be increased (witha warning). Specifying a low version number (as the default) isuseful if you want to produce PDF output that can be viewed on olderor non-Adobe PDF viewers. (PDF 1.4 requires Acrobat 5 or later.)Line widths as controlled by \code{par(lwd=)} are in multiples of1/96 inch. Multiples less than 1 are allowed. \code{pch="."} with\code{cex = 1} corresponds to a square of side 1/72 inch, which isalso the \sQuote{pixel} size assumed for graphics parameters such as\code{"cra"}.The \code{paper} argument sets the \code{/MediaBox} entry in the file,which defaults to \code{width} by \code{height}. If it is set tosomething other than \code{"special"}, a device region of thespecified size is (by default) centred on the rectangle given by thepaper size: if either \code{width} or \code{height} is lessthan \code{0.1} or too large to give a total margin of 0.5 inch, it isreset to the corresponding paper dimension minus 0.5. Thus if youwant the default behaviour of \code{\link{postscript}} use\code{pdf(paper="a4r", width=0, height=0)} to centre the device regionon a landscape A4 page with 0.25 inch margins.}\note{Acrobat Reader does not use the fonts specified but rather emulatesthem from multiple-master fonts. This can be seen in imprecisecentering of characters, for example the multiply and divide signs inHelvetica. This can be circumvented by embedding fonts where possible.Acrobat Reader 5.x and later can be extended by support for Asian and(so-called) Central European fonts (the latter only for 7.x andlater, part of the \sQuote{Extended} pack for 8.x), and this will beneeded for the full use of encodings other than Latin-1. See\url{http://www.adobe.com/products/acrobat/acrrasianfontpack.html}.}\seealso{\code{\link{pdfFonts}},\code{\link{embedFonts}},\code{\link{Devices}},\code{\link{postscript}}More details of font families and encodings and especially handlingtext in a non-Latin-1 encoding and embedding fonts can be found inPaul Murrell and Brian Ripley (2006) Non-standard fonts in PostScriptand PDF graphics. \emph{R News}, 6(2):41--47.\url{http://cran.r-project.org/doc/Rnews/Rnews_2006-2.pdf}.}\examples{\dontrun{## Test function for encodingsTestChars <- function(encoding="ISOLatin1", ...){pdf(encoding=encoding, ...)par(pty="s")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 \%\% 16y <- i \%/\% 16points(x, y, pch=i)}dev.off()}## there will be many warnings.TestChars("ISOLatin2")## this does not view properly in older viewers.TestChars("ISOLatin2", family="URWHelvetica")## works well for viewing in gs-based viewers, and often in xpdf.}}\keyword{device}