gpt4 book ai didi

在 pdf 输出的标题中渲染 logo.png Shiny - Rmarkdown

转载 作者:行者123 更新时间:2023-12-05 04:31:37 25 4
gpt4 key购买 nike

这是这个问题的后续或更多的简化 Error: File header.tex not found in resource path in a rmarkdown generated pdf report from a shiny app

使用这个 Rmarkdown 代码我可以实现我想要的:

logo.png

enter image description here

report.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

现在我想在 Shiny 的应用程序中做同样的事情

为此,我将绘图作为参数传递,并取消注释report.Rmd 文件中的相关部分

report.Rmd 文件中的相关部分:

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

app.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 在 shiny 保存 tempReport 的临时文件中找不到

但我不知道为什么这在从 Markdown 编织时起作用,而不是在从 Shiny 的应用程序调用它时起作用。我想我已经浏览过互联网上的相关网站了!非常感谢!

最佳答案

基本上您已经知道问题出在哪里了。因此,解决问题的一种方法是将报告模板和 Logo 复制到同一临时目录。

# 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())
)
}
)
}

关于在 pdf 输出的标题中渲染 logo.png Shiny - Rmarkdown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71809676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com