R: Add Slides, Insert Texts and Plots to PowerPoint

PowerPoint Interface {DescTools} | R Documentation

## Add Slides, Insert Texts and Plots to PowerPoint

### Description

A couple of functions to get R-stuff into MS-Powerpoint.

`GetNewPP()` starts a new instance of PowerPoint and returns its handle. A new presentation with one empty slide will be created thereby. The handle is needed for addressing the presentation afterwards.
`GetCurrPP()` will look for a running PowerPoint instance and return its handle. `NULL` is returned if nothing's found. `PpAddSlide()` inserts a new slide into the active presentation.
`PpPlot()` inserts the active plot into PowerPoint. The image is transferred by saving the picture to a file in R and inserting the file in PowerPoint. The format of the plot can be selected, as well as crop options and the size factor for inserting.
`PpText()` inserts a new textbox with given text and box properties.

### Usage

    GetNewPP(visible = TRUE, template = "Normal")
    GetCurrPP()

    PpAddSlide(pos = NULL, pp = DescToolsOptions("lastPP"))

    PpPlot(type = "png", crop = c(0, 0, 0, 0), picscale = 100, x = 1, y = 1,
           height = NA, width = NA, res=200, dfact=1.6, pp = DescToolsOptions("lastPP"))

    PpText(txt, x = 1, y = 1, height = 50, width = 100, fontname = "Calibri", fontsize = 18,
           bold = FALSE, italic = FALSE, col = "black", bg = "white",
           hasFrame = TRUE, pp = DescToolsOptions("lastPP"))

### Arguments

`visible` | logical, should PowerPoint made visible by `GetNewPP()`? Defaults to TRUE.
`template` | the name of the template to be used for the new presentation.
`pos` | position of the new inserted slide within the presentation.
`type` | the format for the picture file, default is `"png"`.
`crop` | crop options for the picture, defined by a 4-elements-vector. The first element is the bottom side, the second the left and so on.
`picscale` | scale factor of the picture in percent, default ist 100.
`x, y` | left/upper xy-coordinate for the plot or for the textbox.
`height` | height in cm, this overrides the picscale if both are given.
`width` | width in cm, this overrides the picscale if both are given.
`res` | resolution for the png file, defaults to 200.
`dfact` | the size factor for the graphic.
`txt` | text to be placed in the textbox
`fontname` | used font for textbox
`fontsize` | used fontsize for textbox
`bold` | logic. Text is set bold if this is set to `TRUE` (default is FALSE).
`italic` | logic. Text is set italic if this is to `TRUE` (default is FALSE).
`col` | font color, defaults to `"black"`.
`bg` | background color for textboxdefaults to `"white"`.
`hasFrame` | logical. Defines if a textbox is to be framed. Default is TRUE.
`pp` | the pointer to a PowerPoint instance, can be a new one, created by `GetNewPP()` or the last created by `DescToolsOptions("lastPP")` (default).

### Details

See PowerPoint-objectmodel for further informations.

### Value

The functions return the pointer to the created object.

### Author(s)

Andri Signorell <andri@signorell.net>

### See Also

`WrdPlot`

### Examples

    ## Not run: # Windows-specific example

    # let's have some graphic
    plot(1,type="n", axes=FALSE, xlab="", ylab="", xlim=c(0,1), ylim=c(0,1))
    rect(0,0,1,1,col="black")
    segments(x0=0.5, y0=seq(0.632,0.67, length.out=100),
      y1=seq(0.5,0.6, length.out=100), x1=1, col=rev(rainbow(100)))
    polygon(x=c(0.35,0.65,0.5), y=c(0.5,0.5,0.75), border="white",
      col="black", lwd=2)
    segments(x0=0,y0=0.52, x1=0.43, y1=0.64, col="white", lwd=2)
    x1 <- seq(0.549,0.578, length.out=50)
    segments(x0=0.43, y0=0.64, x1=x1, y1=-tan(pi/3)* x1 + tan(pi/3) * 0.93,
      col=rgb(1,1,1,0.35))

    # get a handle to a new PowerPoint instance
    pp <- GetNewPP()
    # insert plot with a specified height
    PpPlot(pp=pp,  x=150, y=150, height=10, width=10)

    PpText("Remember?\n", fontname="Arial", x=200, y=70, height=30, fontsize=14,
           bold=TRUE, pp=pp, bg="lemonchiffon", hasFrame=TRUE)

    PpAddSlide(pp=pp)
    # crop the picture
    pic <- PpPlot(pp=pp, x=1, y=200, height=10, width=10, crop=c(9,9,0,0))
    pic

    # some more automatic procedure
    pp <- GetNewPP()
    PpText("Hello to my presentation", x=100, y=100, fontsize=32, bold=TRUE,
           width=300, hasFrame=FALSE, col="blue", pp=pp)

    for(i in 1:4){
      barplot(1:4, col=i)
      PpAddSlide(pp=pp)
      PpPlot(height=15, width=21, x=50, y=50, pp=pp)
      PpText(gettextf("This is my barplot nr %s", i), x=100, y=10, width=300, pp=pp)
    }

    ## End(Not run)

[Package DescTools version 0.99.38 Index]