pdf            package:grDevices            R Documentation(latin1)

PDF Graphics Device

Description:

     'pdf' starts the graphics device driver for producing PDF
     graphics.

Usage:

     pdf(file = ifelse(onefile, "Rplots.pdf", "Rplot%03d.pdf"),
         width, height, onefile, family, title, fonts, version,
         paper, encoding, bg, fg, pointsize, pagecentre, colormodel,
         useDingbats)

Arguments:

    file: a character string giving the name of the file. For use with
          'onefile=FALSE' give a C integer format such as
          '"Rplot%03d.pdf"' (the default in that case). (See
          'postscript' for further details.) 

width, height: the width and height of the graphics region in inches. 
          The default values are '7'.

 onefile: logical: if true (the default) allow multiple figures in one
          file.  If false, generate a file with name containing the
          page number for each page.  Defaults to 'TRUE'.

  family: the font family to be used, see 'postscript'.  Defaults to
          '"Helvetica"'.

   title: title string to embed as the '/Title' field in the file. 
          Defaults to '"R Graphics Output"'.

   fonts: a character vector specifying R graphics font family names
          for fonts which will be included in the PDF file.  Defaults
          to 'NULL'.

 version: a string describing the PDF version that will be required to
          view the output.  This is a minimum, and will be increased
          (with a warning) if necessary.  Defaults to '"1.4"', but see
          'Details'.

   paper: the target paper size.  The choices are '"a4"', '"letter"',
          '"legal"' (or '"us"') and '"executive"' (and these can be
          capitalized), or '"a4r"' and '"USr"' for rotated
          ('landscape'). 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 as
          '"a4"' if it is unset or empty. Defaults '"special"'. 

encoding: the name of an encoding file.  See 'postscript' for details. 
          Defaults to '"default"'.

      bg: the initial background color to be used.  Defaults to
          '"transparent"'.

      fg: the initial foreground color to be used.  Defaults to
          '"black"'.

pointsize: the default point size to be used.  Strictly speaking, in
          bp, that is 1/72 of an inch, but approximately in points. 
          Defaults to '12'.

pagecentre: logical: should the device region be centred on the page? -
          is only relevant for 'paper != "special"'.  Defaults to true.

colormodel: a character string describing the color model: currently
          allowed values are '"rgb"', '"gray"' and '"cmyk"'.  Defaults
          to '"rgb"'.

useDingbats: logical.  Should small circles be rendered _via_ the
          Dingbats font?  Defaults to true, which produces smaller and
          better output - this is provided for those who insist on
          using broken PDF viewers.

Details:

     All arguments except 'file' default to values given by
     'pdf.options()'.  The ultimate defaults are quoted in the
     arguments section.

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

     The 'file' argument is interpreted as a C integer format as used
     by 'sprintf', with integer argument the page number. The default
     gives files 'Rplot001.pdf', ..., 'Rplot999.pdf', 'Rplot1000.pdf',
     ....

     The 'family' argument can be used to specify 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.  (See the
     documentation for 'pdfFonts'.)

     R does _not_ embed fonts in the PDF file, so it is only
     straightforward to use mappings to the font families that can be
     assumed to be available in any PDF viewer: '"Times"' (equivalently
     '"serif"'), '"Helvetica"' (equivalently '"sans"') and '"Courier"'
     (equivalently '"mono"'). Other families may be specified, but it
     is the user's responsibility to ensure that these fonts are
     available on the system and third-party software, e.g.,
     Ghostscript, may be required to embed the fonts so that the PDF
     can be included in other documents (e.g., LaTeX): see
     'embedFonts'.  The URW-based families described for 'postscript'
     can be used with viewers set up to use URW fonts, which is usual
     with those based on 'xpdf' or Ghostscript. Since 'embedFonts'
     makes use of Ghostscript, it should be able to embed the URW-based
     families for use with other viewers.

     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.

     The PDF produced 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 declares the version of PDF that gets
     produced.  The version must be at least 1.4 for semi-transparent
     output 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 (with a warning).  Specifying a low version number is
     useful if you want to produce PDF output that can be viewed on
     older or non-Adobe PDF viewers.  (PDF 1.4 requires Acrobat 5 or
     later.)

     Line widths as controlled by 'par(lwd=)' are in multiples of 1/96
     inch.  Multiples less than 1 are allowed.  'pch="."' with 'cex =
     1' corresponds to a square of side 1/72 inch, which is also the
     'pixel' size assumed for graphics parameters such as '"cra"'.

     The 'paper' argument sets the '/MediaBox' entry in the file, which
     defaults to 'width' by 'height'.  If it is set to something other
     than '"special"', a device region of the specified size is (by
     default) centred on the rectangle given by the paper size: if
     either 'width' or 'height' is less than '0.1' or too large to give
     a total margin of 0.5 inch, it is reset to the corresponding paper
     dimension minus 0.5.  Thus if you want the default behaviour of
     'postscript' use 'pdf(paper="a4r", width=0, height=0)' to centre
     the device region on a landscape A4 page with 0.25 inch margins.

     When the background colour is fully transparent (as is the initial
     default value), the PDF produced does not paint the background.
     Almost all PDF viewers will use a white canvas so the visual
     effect is if the background were white.  This will not be the case
     when printing onto coloured paper, though.

Color models:

     The default color model is RGB, and model '"gray"' maps RGB colors
     to greyscale using perceived luminosity (biased towards green).
     '"cmyk"' outputs in CMYK colorspace.  Nothing in R specifies the
     interpretation of the RGB or CMYK color spaces, and the simplest
     possible conversion to CMYK is used (<URL:
     http://en.wikipedia.org/wiki/CMYK_color_model#Mapping_RGB_to_CMYK>).

Conventions:

     This section describes the implementation of the conventions for
     graphics devices set out in the "R Internals Manual".


        *  The default device size is 7 inches square.

        *  Font sizes are in big points.

        *  The default font family is Helvetica.

        *  Line widths are as a multiple of 1/96 inch, with no minimum. 

        *  Circles of any radius are allowed.  Unless 'useDingbats =
           FALSE', opaque circles of less than 10 big points radius are
           rendered using char 108 in the Dingbats font: all
           semi-transparent and larger circles using a Bezier curve for
           each quadrant.

        *  Colours are interpreted by the viewing/printing application.

Note:

     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.  This can be circumvented by embedding
     fonts where possible.  Most other viewers substitute fonts, e.g.
     URW fonts for the standard Helvetica and Times fonts, and these
     too often have different font metrics from the true fonts.

     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
     and later, part of the 'Extended' pack for 8.x and later), and
     these will be needed for the full use of encodings other than
     Latin-1.  See <URL:
     http://www.adobe.com/products/acrobat/acrrasianfontpack.html> for
     Reader 5.x to 8.x, and Updates on <URL: http://www.adobe.com> for
     9.x.

See Also:

     'pdfFonts', 'pdf.options', 'embedFonts', 'Devices', 'postscript'.
     'cairo_pdf' and (on Mac OS X only) 'quartz' for other devices that
     can produce PDF.

     More details of font families and encodings and especially
     handling text in a non-Latin-1 encoding and embedding fonts can be
     found in

     Paul Murrell and Brian Ripley (2006) Non-standard fonts in
     PostScript and PDF graphics. _R News_, 6(2):41-47. <URL:
     http://cran.r-project.org/doc/Rnews/Rnews_2006-2.pdf>.

Examples:

     ## Not run: 
     ## Test function for encodings
     TestChars <- 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 %% 16
             y <- i %/% 16
             points(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.
     ## End(Not run)

