Чтобы встроить средство просмотра PDF (средство просмотра PDF по умолчанию в вашем веб-браузере, например, pdf.js в Mozilla) в ваш интерфейс Shiny, вы можете использовать iframe, src которого будет путем к вашему PDF.
Вот два разных способа включить iframe в ваш интерфейс:
в пользовательском интерфейсе вы можете напрямую добавить тег iframe
с абсолютным атрибутом src, как показано ниже:
tags$iframe(style="height:600px; width:100%", src="http://localhost/ressources/pdf/R-Intro.pdf"))
Или получите URL-адрес из пользовательского интерфейса на сервере, напишите тег iframe
с входным URL-адресом и верните код HTML в htmlOutput в пользовательском интерфейсе:
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"))
)
)
)
))
Сервер.R:
shinyServer(function(input, output, session) {
output$pdfviewer <- renderText({
return(paste('<iframe style="height:600px; width:100%" src="', input$pdfurl, '"></iframe>', sep = ""))
})
})
Веб-страницы со средствами просмотра PDF:
![введите здесь описание изображения](https://i.stack.imgur.com/gWBRt.png)
Надеюсь, это поможет.
person
Julien Navarre
schedule
09.01.2014
/
для путей вместо \\ даже в окнах - person beroe   schedule 19.10.2013