Рендеринг logo.png в заголовке выходного PDF-файла блестящий - Rmarkdown

Это продолжение или упрощение этого вопроса Ошибка: файл header.tex не найден в пути к ресурсу в сгенерированном rmarkdown отчете в формате PDF из блестящего приложения.

С помощью этого кода Rmarkdown я могу добиться того, чего хочу:

логотип.png

enter image description here

отчет.Rmd

---
geometry: margin=20truemm
fontfamily: mathpazo
fontsize: 11pt
documentclass: article
classoption: a4paper
urlcolor: blue
output: 
    pdf_document:
header-includes:
   - \usepackage{fancyhdr}
   - \pagestyle{fancy}
   - \rhead{\includegraphics[width = .05\textwidth]{logo.png}}
params: 
    scores: NA
---
<!-- ```{r, echo=FALSE} -->
<!-- hist(params$scores) -->
<!-- ``` -->

```{r}
hist(runif(100))
```

Получение желаемого результата: логотип R находится в заголовке:enter image description here

Теперь я хотел бы сделать то же самое из блестящего приложения

Для этого я передаю график как параметр и раскомментирую соответствующую часть в файле отчет.Rmd.

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

```{r, echo=FALSE}
hist(params$scores)
```

приложение.R

# Global variables can go here
n <- 200


# Define the UI
ui <- bootstrapPage(
  numericInput('n', 'Number of obs', n),
  plotOutput('plot'),
  downloadButton('report', 'Generate Report')
)


# Define the server code
server <- function(input, output) {
  output$plot <- renderPlot({
    hist(runif(input$n))
  })
  
  # create markdown report  ----------------------------------
  
  output$report <- downloadHandler(
    filename = "report.pdf",
    content = function(file) {
      tempReport <- file.path(tempdir(), "report.Rmd")
      file.copy("report.Rmd", tempReport, overwrite = TRUE)
      
      params <- list(scores = input$n)
      
      rmarkdown::render(tempReport, output_file = file,
                        params = params,
                        envir = new.env(parent = globalenv())
      )
    }
  )
  
}

# Return a Shiny app object
shinyApp(ui = ui, server = server)

Ошибка:

! Package pdftex.def Error: File `logo.png' not found: using draft setting.

Я подозреваю, потому что он работает локально. logo.png не найден во временном файле, где shining сохраняет tempReport.

Но я не знаю, почему это работает при вязании из уценки, а не при вызове из блестящего приложения. Я думаю, что я был через соответствующие сайты в Интернете! Большое спасибо!

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
3
0
24
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В общем, вы уже поняли, в чем дело. Следовательно, одним из способов решения вашей проблемы будет копирование шаблона отчета и логотипа в один и тот же временный каталог.

# Define the server code
server <- function(input, output) {
  output$plot <- renderPlot({
    hist(runif(input$n))
  })
  # create markdown report  ----------------------------------
  output$report <- downloadHandler(
    filename = "report.pdf",
    content = function(file) {
      td <- tempdir()
      tempReport <- file.path(td, "report.Rmd")
      tempLogo <- file.path(td, "logo.png")
      file.copy("report.Rmd", tempReport, overwrite = TRUE)
      file.copy("logo.png", tempLogo, overwrite = TRUE)

      params <- list(scores = input$n)

      rmarkdown::render(tempReport,
        output_file = file,
        params = params,
        envir = new.env(parent = globalenv())
      )
    }
  )
}

Другие вопросы по теме