Раньше я мог включать изображения из URL-адресов в отчеты в формате PDF, созданные блестящими приложениями, выполняющими ![](url.com). Через несколько версий уценки я получаю следующую ошибку: ! Unable to load picture or PDF file https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?ssl=1 для того же кода. Добавление pandoc_args: ["--extract-media", "."] в YAML загружает файл образа локально, но работает только с локальными файлами r-markdown.

  • Как shinyapp хранит локальные файлы и как заставить работать обходной путь extract-media?
  • Как включить веб-изображения в PDF-файлы в shinyapps?

Пример r-markdown


title: "Test"
header-includes:
    - \usepackage{graphicx}
    - \usepackage{hyperref}
output:
  pdf_document:
    latex_engine: xelatex
    pandoc_args: ["--extract-media","."]
    number_sections: yes
    keep_tex: yes
classoption: article
papersize: A4
fontsize: 10pt
geometry: margin=0.9in
linestretch: 1.15
---
## R Markdown
![click](https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?ssl=1)

Генерация отчета о запуске блока server.R

## img report
output$downloadImgReport <- downloadHandler(
    filename = function() {
        paste0(format(Sys.time(), '%Y%m%d'),'-WS-CM-image-report-',docounts()$count, '.pdf')
    },
    content = function(file) {
        src <- normalizePath('Untitled.Rmd')
        src1 <- normalizePath('logo.png')
        owd <- setwd(tempdir())
        on.exit(setwd(owd))
        file.copy(src, 'Untitled.Rmd', overwrite = TRUE)
        file.copy(src1,'logo.png')
        library(rmarkdown)
        out <- render('Untitled.Rmd', output_format=pdf_document(latex_engine = "xelatex"))
        writetolog(1,session$token)
        file.rename(out, file)
    }
)
7
Philipp R 4 Окт 2018 в 21:05

1 ответ

Лучший ответ

Последняя версия rmarkdown требует, чтобы изображения были загружены локально. Добавление pandoc_args: ["--extract-media","."] в заголовок YAML работает для локальных файлов rmarkdown, но не в среде блестящего приложения.

Понижение версии rmarkdown до версии 1.9 позволит автоматически загружать изображения.

Как вариант, файлы можно загрузить локально, используя download.file() и указав абсолютный путь.

title: "Test"
header-includes:
    - \usepackage{graphicx}
    - \usepackage{hyperref}
output:
  pdf_document:
    latex_engine: xelatex
    pandoc_args: ["--extract-media","."]
    number_sections: yes
    keep_tex: yes
classoption: article
papersize: A4
fontsize: 10pt
geometry: margin=0.9in
linestretch: 1.15
---
## R Markdown
download.file(url = "https://i0.wp.com/wptavern.com/wp-content/uploads/2016/07/stack-overflow.png?ssl=1"), destfile = "stack-overflow.png")
![click]("stack-overflow.png")
6
Philipp R 10 Окт 2018 в 07:45