Ответ 1
Чтобы внедрить средство просмотра PDF (средство просмотра PDF по умолчанию вашего веб-браузера, например pdf.js на mozilla) в вашем Shiny ui, вы можете использовать iframe, который src станет путем вашего PDF файла.
Вот два разных способа включить iframe в ваш интерфейс:
в Ui вы можете напрямую добавить тег iframe
с абсолютным атрибутом src, как показано ниже:
tags$iframe(style="height:600px; width:100%", src="http://localhost/ressources/pdf/R-Intro.pdf"))
Или получите URL-адрес от ui на сервере, напишите тег iframe
с URL-адресом ввода и верните HTML-код в htmlOutput в файле ui:
Ui: textInput("pdfurl", "PDF URL")
htmlOutput('pdfviewer')
Сервер:
output$pdfviewer <- renderText({
return(paste('<iframe style="height:600px; width:100%" src="', input$pdfurl, '"></iframe>', sep = ""))
})
Обратите внимание, что когда страницы загружаются протоколом HTTP (S) (случай приложения Shiny) по соображениям безопасности, вы не можете создавать файлы локалей с их URL-адресами "file:". Если вы хотите отображать локальные pdf файлы, вы должны получить к ним доступ с URL-адресом http(s):
, поэтому вам нужно сохранить их в своем www-каталоге (локальном веб-сервере) и получить доступ к файлам с их URL-адресами http(s):
(URL-адрес будет что-то вроде http://localhost/.../mypdf.pdf
), как во втором iframe моего примера. (Тогда вы не можете напрямую использовать fileInput, вам нужно отформатировать его)
Ui.R:
library(shiny)
row <- function(...) {
tags$div(class="row", ...)
}
col <- function(width, ...) {
tags$div(class=paste0("span", width), ...)
}
shinyUI(bootstrapPage(
headerPanel("PDF VIEWER"),
mainPanel(
tags$div(
class = "container",
row(
col(3, textInput("pdfurl", "PDF URL"))
),
row(
col(6, htmlOutput('pdfviewer')),
col(6, tags$iframe(style="height:600px; width:100%", src="http://localhost/ressources/pdf/R-Intro.pdf"))
)
)
)
))
Server.R:
shinyServer(function(input, output, session) {
output$pdfviewer <- renderText({
return(paste('<iframe style="height:600px; width:100%" src="', input$pdfurl, '"></iframe>', sep = ""))
})
})
Веб-страницы с просмотром PDF:
Надеюсь на эту помощь.