Shiny / RMarkdown: внешняя картинка не найдена - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть приложение Shiny, которое позволяет создавать отчет в формате PDF через downloadHandler ().Я включаю внешний файл изображения в мой файл .Rmd.Когда я вяжу только один файл .Rmd, отображается это изображение.Когда я генерирую свой отчет в формате PDF через приложение Shiny (которое вызывает файл .Rmd), изображение не найдено, и отчет не может быть создан.Что я делаю не так?

Соответствующая часть приложения Shiny:

  output$report <- downloadHandler(
    filename = "report.pdf",
    content = function(file) {
      # Copy the report file to a temporary directory before processing it, in
      # case we don't have write permissions to the current working dir (which
      # can happen when deployed).
      tempReport <- file.path(tempdir(), "report.Rmd")
      file.copy("report.Rmd", tempReport, overwrite = TRUE)

      abs_kontr <- "test variable"

      # Set up parameters to pass to Rmd document
      params <- list(abs_kontr = abs_kontr)

      # Knit the document, passing in the `params` list, and eval it in a
      # child of the global environment (this isolates the code in the document
      # from the code in this app).
      rmarkdown::render(tempReport, output_file = file,
                        params = params,
                        envir = new.env(parent = globalenv())
      )
    }
  )

А вот соответствующая часть моего .Rmd файла:

---
output: 
  pdf_document:
    latex_engine: xelatex
    fig_caption: yes
    number_sections: true
params:
  abs_kontr: NA
mainfont: Calibri
fontsize: 12pt
header-includes:
- \usepackage{fancyhdr}
- \pagestyle{fancy}
- \fancyhead[]{}
- \fancyfoot[LO,LE]{`r format(Sys.time(), "%B %Y")`}
- \renewcommand{\footrulewidth}{0.4pt}
- \renewcommand{\headrulewidth}{0pt}
- \usepackage{sectsty}
- \setsansfont[Ligatures=TeX]{Arial Narrow}
- \sectionfont{\sffamily\Huge}
- \subsectionfont{\sffamily\huge}
- \subsectionfont{\sffamily\LARGE}

---
\thispagestyle{empty}
\linespread{1}
\begin{flushright}

```{r echo=FALSE, out.width="100%", fig.align='right'}
knitr::include_graphics("www/logo.jpg")
```

"Knitr :: include_graphics (" www / logo.jpg ")" - это часть, которая работает, когда я компилирую документ напрямую, но не работает, когда я вызываю создание PDF через приложение Shiny.Когда я хочу загрузить отчет через приложение Shiny, требуется несколько секунд, прежде чем я перенаправлюсь на страницу «файл не найден», указывающий на сбой кода.

1 Ответ

0 голосов
/ 04 декабря 2018

Я нашел решение самостоятельно, благодаря Использование изображения в отчете об уценке r, загруженном из приложения Shiny :

Вы должны также скопировать все включенные внешние изображения в временный путьтак что они найдены!Просто добавьте в ваше приложение следующее: R:

tempReport2 <- file.path(tempdir(), "logo.jpg")
      file.copy("logo.jpg", tempReport2, overwrite = TRUE)
...