为什么webshot不能使用R闪亮的传单?

时间:2016-11-28 19:48:23

标签: r leaflet shiny

首先关闭webshot并不是在这个背景下工作webshot(" google.com")            对于webshot(" www.google.com")我得到:

        env: node\r: No such file or directory
        Error in webshot("google.com") : webshot.js returned failure value: 127

所以这不适用于传单代码

    staters <<-    
   readOGR(dsn="cb_2015_us_county_20m",layer="cb_2015_us_county_20m")
  getMap<-function()({

leaflet(staters) %>%
  addPolygons( stroke = T, fillOpacity =.7, smoothFactor = 0, color = "black",
               weight = .5, fill = T, fillColor = "red"
  )
output$downloadMap <- downloadHandler(
filename = function() { paste(input$chooseStates, '.png', sep='') },
content = function(file) {
  # temporarily switch to the temp dir, in case you do not have write
  # permission to the current working directory
  owd <- setwd(tempdir())
  on.exit(setwd(owd))

  saveWidget(getMap(), "temp.html", selfcontained = FALSE)
  webshot("temp.html", file = "filename.png", cliprect = "viewport")
}

我在rshiny

上运行时遇到404错误

1 个答案:

答案 0 :(得分:1)

它正在发挥作用。我认为您错过了file webshot downloadHandler中的reactive参数。

我将传单地图保存在renderLeaflet中,然后您可以在downloadHandler## install 'webshot' package library(devtools) # install_github("wch/webshot") ## load packages # install_phantomjs(version = "2.1.1", # baseURL = "https://github.com/wch/webshot/releases/download/v0.3.1/") library(leaflet) library(htmlwidgets) library(webshot) library(shiny) ui <- fluidPage( leafletOutput("map"), downloadLink("downloadMap", "Download") ) server <- function(input,output) { mapReact <- reactive({ leaflet() %>% addTiles('http://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png') %>% addCircles(12.5,42,radius=500) %>% addMarkers(12,42,popup="Rome") }) output$map <- renderLeaflet({ mapReact() }) output$downloadMap <- downloadHandler( filename = paste("LeafletMap", '.png', sep=''), content = function(file) { owd <- setwd(tempdir()) on.exit(setwd(owd)) saveWidget(mapReact(), "temp.html", selfcontained = FALSE) webshot("temp.html", file = file, cliprect = "viewport") }) } shinyApp(ui, server) 中调用它。

以下示例应该有效:

VLC HTTP requests